diff -ruN TiMidity++-2.4.1/ChangeLog TiMidity++-2.5.0/ChangeLog --- TiMidity++-2.4.1/ChangeLog Wed Aug 11 21:32:20 1999 +++ TiMidity++-2.5.0/ChangeLog Thu Aug 26 11:37:01 1999 @@ -1,3 +1,127 @@ +1999-08-26 Masanao Izumo + + * Version 2.5.0 released. + +1999-08-26 Masanao Izumo + + * timidity/linux_a.c(ignore_processed_probrem): Ignore to fix + the byte processed probrem if any errors occur. + Why count_info.bytes doesn't stop even if the process is suspended? + * configure.in: Remove -rdynamic option from $g_so_libs. + +1999-08-25 Masanao Izumo + + * libarc/url_dir.c: If !unix, Don't use i-node to compare the directory. + * configs/{msc-config.h,msc-interface.h,msc-sjis.txt}: Configuration + header files for MSC. + * Makefile.am(dist-hook): Added script to distribute configs/* + * timidity/playmidi.c (Voice Reduction): Avoid division by zero. + +1999-08-25 Eric A. Welsh + + * timidity/resample.c(RESAMPLATION): Optimization of macro for + cspline with linear fallback. + +1999-08-24 Masanao Izumo + + * interface/{Makefile.am,Makefile.in,w32g.h,w32g_c.c,w32g_i.c, + w32g_ini.c,w32g_playlist.c,w32g_pref.c,w32g_rec.h,w32g_res.h, + w32g_res.rc,w32g_subwin.c,w32g_subwin.h,w32g_utl.c,w32g_utl.h, + w32g_sleep.bmp}, + libarc/url.c, + timidity/{aq.c,common.c,controls.h,effect.c,playmidi.c,readmidi.c, + sndfont.c,timidity.c,timidity.h,version.c,audio_cnv.c}, + Update new version of Windows GUI. + Changes for MSC version. + * TiMidity.ad, TiMidity-uj.ad: X Resources for XAW interface. + * timidity/playmidi.c (compute_data): Fix division by zero. + +1999-08-21 Masanao Izumo + + * timidity/{output.h,playmidi.c,w32g_a.c} (PM_REQ_PLAY_END): New macro. + PM_REQ_PLAY_END is called just after playing. + * timidity/playmici.c (midi_program_change): Don't load instrument + if !(play_mode->flag & PF_PCM_STREAM) + * timidity/list_a.c (ME_PROGRAM): Call midi_program_change() to + change the program. + * timidity/list_a.c (channel): static -> extern. + * timidity/list_a.c (start_list_a, end_list_a): New function. + start_list_a(): Initialize internal variable. + end_list_a(): Report internal variable. + * interface/{w32g_c.c,w32g_i.c,w32g_pref.c} (List Midi Event `l'): + Supported. This output mode is useful to check what kind of patche + is used. + +1999-08-20 Eric A. Welsh + + * timidity/{playmidi.c,playmidi.h,resample.h,timidity.c} + (cspline and langrange interpolation): + reduce_quality_flag: New variable to reduce CPU load for + cspline and langrange interpolation. TiMidity turns + reduce_quality_flag on when the CPU is heavily loaded. + -4: New command line option to toggle whether ignore reduce_quality_flag. + By default, TiMidity uses reduce_quality_flag. + +1999-08-20 Masanao Izumo + + * interface/{w32g*,Makefile.am},timidity/w32g_a.c,configure.in: + Update new version of Windows GUI. + * timidity/{playmidi.c,controls.h} (RC_TUNE_END) Used for skip + current playing. This changes may be useful to play backward order of + playlist. + * timidity/miditrace.c (trace_wait_samples): Bug fixed. This fix + would down the CPU load in the trace mode. + +1999-08-19 Masanao Izumo + + * timidity/{controls.h,playmidi.c} (CTLE_MAXVOICES): New macro for + `voices' change. + +1999-08-18 Eric A. Welsh + + * libarc/url_dir.c (d_ino): Ignore to check d_ino on Windows. + +1999-08-18 Masanao Izumo + + * interface/ncurs_c.c (GSLCD): Draw GSLCD SysEx. + Note that LCD is cleard if there is no message between 10 second. + * interface/ncurs_c.c: Enable to display channels more than 16ch. + The terminal must be able to display more than 24 rows to display + more than 16ch. + +1999-08-17 Masanao Izumo + + * interface/{common.c,common.h} (path_strchr, path_strrchr): + New function to find path separator. + * timidity/timidity.h (IS_PATH_SEP): New macro to test whether + the character is the path separator. + * interface/{ncurs_c.c,w32g_utl.c}, + timidity/{common.c,wrdt.c,timidity.c}, + libarc/{arc.c,url.c}: + Fix comparation of path separator. + - Use `IS_PATH_SEP(c)' instead of `c == PATH_SEP'. + - Use `pathsep_strchr(str)' instead of `strchr(str, PATH_SEP)' + - Use `pathsep_strrchr(str)' instead of `strrchr(str, PATH_SEP)' + Windows console ncurses interface recognizes both + "/" and "\" as path separator. + * utils/{bitset.c,bitset.h} (check_bitset,change_bitset): New function. + +1999-08-16 Masanao Izumo + + * interface/x_wrdwindow.c: Works more stable for TrueColor. + * interface/x_sherry.c: Don't draw the window in skipping. + * interface/x_sherry.c: Bug fixed: + - Could not re-open window. + - Printed unexpected character. + +1999-08-15 Masanao Izumo + * interface/x_sherry.c: Change debug message verbosity. + * interface/wrdt_x.c: Change debug message verbosity. + +1999-08-13 Masanao Izumo + + * interface/ncurs_c.c: Fixed `L' command bug. + 1999-08-11 Masanao Izumo * Version 2.4.1 released. @@ -25,17 +149,6 @@ 1999-08-10 Masanao Izumo - * libarc/arc.c: Bug fixed. - * interface/x_sherry.c: Bug fixed. - * libarc/{arc.h,arc.c}: Removed `pool' from ArchiveHandler. - Use static variable arc_buffer in arc.c instead of ArchiveHandler.pool. - `arc_buffer' which is internal usage only. - * timidity/playmidi.c (apply_controls): usleep(300000) if play_pause_flag. - * interface/{w32g_c.c,w32g_canvas.c}: - Fixed update timing for channel bar mode. - -1999-08-10 Masanao Izumo - * libarc/arc.c (): Bug fixed to extract `-lh0-' and `-lz4-' of the lha. * interface/x_sherry.c: Bug fixed to create SHM pixmap. * libarc/{arc.h,arc.c}: Removed `pool' from ArchiveHandler. @@ -45,7 +158,6 @@ * interface/{w32g_c.c,w32g_canvas.c}: Fixed update timing for channel bar mode. - 1999-08-09 Masanao Izumo * Version 2.4.0 released. @@ -214,7 +326,7 @@ * configure.in: Fixed bug about X path option. * timidity/timidity.h (NLS): Change to "\n" for cygwin. * interface/gtk_c.c (trace_playing): False by default. - * interface/gtk_c.c (ctl_current_time): Update weather trace_playing + * interface/gtk_c.c (ctl_current_time): Update whether trace_playing is true or false. * interface/gtk_c.c (cmsg): Likewise. * interface/gtk_c.c (_ctl_refresh): Obsoleted. @@ -252,7 +364,7 @@ 1999-06-22 Masanao Izumo - * libarc/arc_tar.c: Use checksum wheather the tar file is valid or not. + * libarc/arc_tar.c: Use checksum whether the tar file is valid or not. "ustar" magic is ignored. 1999-06-14 Masanao Izumo diff -ruN TiMidity++-2.4.1/Makefile.am TiMidity++-2.5.0/Makefile.am --- TiMidity++-2.4.1/Makefile.am Mon Jun 14 10:34:50 1999 +++ TiMidity++-2.5.0/Makefile.am Wed Aug 25 16:43:40 1999 @@ -38,7 +38,9 @@ README \ README.jp \ timidity.ide \ - timidity.mak + timidity.mak \ + TiMidity-uj.ad \ + TiMidity.ad TOOLSDIR = timidity-tools UMPDIR = ump @@ -59,6 +61,8 @@ cd timidity; $(MAKE) install dist-hook: + CONFIG_HEADERS='' CONFIG_FILES=configs/msc-config.h $(SHELL) ./config.status + cp -r configs $(distdir) chmod -R a+r $(distdir) $(TAR) chof - $(distdir) | bzip2 -9 --repetitive-best - > $(distdir).tar.bz2 diff -ruN TiMidity++-2.4.1/Makefile.in TiMidity++-2.5.0/Makefile.in --- TiMidity++-2.4.1/Makefile.in Wed Aug 11 22:06:35 1999 +++ TiMidity++-2.5.0/Makefile.in Thu Aug 26 13:00:25 1999 @@ -91,7 +91,6 @@ ESD_CFLAGS = @ESD_CFLAGS@ ESD_CONFIG = @ESD_CONFIG@ ESD_LIBS = @ESD_LIBS@ -EXEEXT = @EXEEXT@ EXTRALIBS = @EXTRALIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_CONFIG = @GTK_CONFIG@ @@ -116,7 +115,7 @@ SUBDIRS = utils libarc interface timidity doc -EXTRA_DIST = AUTHORS COPYING ChangeLog ChangeLog.1 INSTALL INSTALL.jp NEWS README README.jp timidity.ide timidity.mak +EXTRA_DIST = AUTHORS COPYING ChangeLog ChangeLog.1 INSTALL INSTALL.jp NEWS README README.jp timidity.ide timidity.mak TiMidity-uj.ad TiMidity.ad TOOLSDIR = timidity-tools @@ -441,6 +440,8 @@ cd timidity; $(MAKE) install dist-hook: + CONFIG_HEADERS='' CONFIG_FILES=configs/msc-config.h $(SHELL) ./config.status + cp -r configs $(distdir) chmod -R a+r $(distdir) $(TAR) chof - $(distdir) | bzip2 -9 --repetitive-best - > $(distdir).tar.bz2 diff -ruN TiMidity++-2.4.1/NEWS TiMidity++-2.5.0/NEWS --- TiMidity++-2.4.1/NEWS Wed Aug 11 17:17:54 1999 +++ TiMidity++-2.5.0/NEWS Thu Aug 26 12:11:59 1999 @@ -1,3 +1,15 @@ +8/26, 1999 + * Version 2.5.0 released. + * Upgrade Windows GUI. + * MIMPI WRD for TrueColor X Window works more stable. + * In ncurses interface, support to display GSLCD. + * In ncurses interface, Enable to display channels more than 16ch. + The terminal must be able to display more than 24 rows to display + more than 16ch. + * On Windows, recognize both `\' and `/' as path separator if the + binary is compiled with Cygwin. + * Bug fix. + 8/11, 1999 * Version 2.4.1 released. * Bug fix. diff -ruN TiMidity++-2.4.1/TiMidity-uj.ad TiMidity++-2.5.0/TiMidity-uj.ad --- TiMidity++-2.4.1/TiMidity-uj.ad Thu Jan 1 09:00:00 1970 +++ TiMidity++-2.5.0/TiMidity-uj.ad Tue Aug 24 20:30:31 1999 @@ -0,0 +1,256 @@ +! TiMidity.ad -- app-defaults file for TiMidity++ XAW interface +! Created by Yoshishige Arai + +TiMidity*Command*international: True +TiMidity*file_simplemenu*international: True +TiMidity*Label*fontSet: -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-iso8859-1,-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1873-0 +TiMidity*MenuButton*fontSet: -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-iso8859-1,-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1873-0 +TiMidity*Command*fontSet: -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-iso8859-1,-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1873-0 +TiMidity*List*fontSet: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-1,-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1873-0 +TiMidity*Text*fontSet: -misc-fixed-medium-r-normal--14-*-*-*-*-*-iso8859-1,-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1873-0 +TiMidity*Form*fontSet: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-1,-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1873-0 +TiMidity*Text*background: gray82 +TiMidity*Text*scrollbar*background: gray82 +TiMidity*Scrollbar*background: gray82 +TiMidity*Label.foreground: black +TiMidity*Label.background: #CCFF33 +TiMidity*Command.background: gray78 +TiMidity*Dialog.Command.background: gray78 +TiMidity*Dialog.Text.background: gray82 +TiMidity*load_dialog.label.background: gray67 +TiMidity*international: True +TiMidity*fontSet: -*--14-* +TiMidity*MenuButton.translations: : highlight()\n\ + : reset()\n\ + Any: reset() fix-menu() PopupMenu() +TiMidity*menu_box.borderWidth: 0 +TiMidity*button_box.borderWidth: 0 +TiMidity*button_box.horizDistance: 4 +TiMidity*file_menubutton.menuName: file_simplemenu +TiMidity*file_menubutton.width: 60 +TiMidity*file_menubutton.height: 28 +TiMidity*file_menubutton.horizDistance: 6 +TiMidity*file_menubutton.vertDistance: 4 +TiMidity*title_menubutton.menuName: title_simplemenu +TiMidity*file_menubutton.file_simplemenu*fontSet: -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-iso8859-1,-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1873-0 +TiMidity*title_menubutton.title_simplemenu*fontSet: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-1,-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1873-0 +TiMidity*SmeBSB.fontSet: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-iso8859-1,-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1873-0 +TiMidity*menu_width: 300 +TiMidity*popup_abox.OK.label: 確認 +TiMidity*title_menubutton.width: 210 +TiMidity*title_menubutton.height: 28 +TiMidity*title_menubutton.resize: false +TiMidity*title_menubutton.horizDistance: 6 +TiMidity*title_menubutton.vertDistance: 4 +TiMidity*title_menubutton.fromHoriz: file_menubutton +TiMidity*time_label.width: 92 +TiMidity*time_label.height: 26 +TiMidity*time_label.resize: false +TiMidity*time_label.fromHoriz: title_menubutton +TiMidity*time_label.horizDistance: 1 +TiMidity*time_label.vertDistance: 4 +TiMidity*time_label.label: time / mode +TiMidity*button_box.height: 40 +TiMidity*play_button.width: 32 +TiMidity*play_button.height: 32 +TiMidity*play_button.horizDistance: 1 +TiMidity*play_button.vertDistance: 9 +TiMidity*pause_button.width: 32 +TiMidity*pause_button.height: 32 +TiMidity*pause_button.horizDistance: 1 +TiMidity*pause_button.vertDistance: 1 +TiMidity*stop_button.width: 32 +TiMidity*stop_button.height: 32 +TiMidity*stop_button.horizDistance: 1 +TiMidity*stop_button.vertDistance: 1 +TiMidity*prev_button.width: 32 +TiMidity*prev_button.height: 32 +TiMidity*prev_button.horizDistance: 1 +TiMidity*prev_button.vertDistance: 1 +TiMidity*back_button.width: 32 +TiMidity*back_button.height: 32 +TiMidity*back_button.horizDistance: 1 +TiMidity*back_button.vertDistance: 1 +TiMidity*fwd_button.width: 32 +TiMidity*fwd_button.height: 32 +TiMidity*fwd_button.horizDistance: 1 +TiMidity*fwd_button.vertDistance: 1 +TiMidity*next_button.width: 32 +TiMidity*next_button.height: 32 +TiMidity*next_button.horizDistance: 1 +TiMidity*next_button.vertDistance: 1 +TiMidity*quit_button.width: 32 +TiMidity*quit_button.height: 32 +TiMidity*quit_button.horizDistance: 1 +TiMidity*quit_button.vertDistance: 1 +TiMidity*random_button.width: 32 +TiMidity*random_button.height: 32 +TiMidity*random_button.horizDistance: 4 +TiMidity*random_button.vertDistance: 1 +TiMidity*repeat_button.width: 32 +TiMidity*repeat_button.height: 32 +TiMidity*repeat_button.horizDistance: 1 +TiMidity*repeat_button.vertDistance: 1 +TiMidity*lyric_text.fromVert: tune_box +TiMidity*lyric_text.borderWidth: 1 +TiMidity*lyric_text.vertDistance: 4 +TiMidity*lyric_text.horizDistance: 6 +TiMidity*lyric_text.height: 120 +TiMidity*lyric_text.scrollVertical: WhenNeeded +TiMidity*lyric_text.translations: #override\n\ + : do-deltext() +TiMidity*popup_optbox*international: True +TiMidity*lyric_text.international: True +TiMidity*volume_box*fontSet: -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-iso8859-1,-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1873-0 +TiMidity*tune_box*fontSet: -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-iso8859-1,-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1873-0 +TiMidity*volume_label.vertDistance: 0 +TiMidity*volume_box.vertDistance: 2 +TiMidity*volume_box.borderWidth: 0 +TiMidity*volume_label.borderWidth: 0 +TiMidity*volume_bar.length: 330 +TiMidity*tune_box.borderWidth: 0 +TiMidity*tune_label.label: ---- +TiMidity*tune_label.vertDistance: 0 +TiMidity*tune_label.horizDistance: 0 +TiMidity*tune_label0.horizDistance: 0 +TiMidity*tune_box.vertDistance: 2 +TiMidity*tune_bar.length: 330 +TiMidity*popup_load.title: TiMidity +TiMidity*popup_loadform.height: 400 +TiMidity*popup_option.title: TiMidity +TiMidity*popup_file.title: TiMidity +TiMidity*popup_about.title: Information +TiMidity*load_dialog.label: ファイル名 +TiMidity*load_dialog.borderWidth: 0 +TiMidity*load_dialog.height: 132 +TiMidity*trace.vertDistance: 2 +TiMidity*trace.borderWidth: 1 +TiMidity*trace_vport.borderWidth: 1 +TiMidity*popup_loadform.load_dialog.label.fontSet: -adobe-helvetica-medium-r-*-*-14-*-*-*-*-*-iso8859-1,-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1873-0 +TiMidity*popup_abox*fontSet: -adobe-helvetica-bold-o-*-*-14-*-*-*-*-*-*-*,-misc-fixed-medium-r-normal--14-*-*-*-*-*-jisx0208.1873-0 +TiMidity*cwd_label.font: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-* +TiMidity*time_label*cwd_info.font: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-* +TiMidity*time_label.font: -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-* +TiMidity*BitmapDir: /usr/local/lib/timidity/bitmaps/ +TiMidity*volume_bar.translations: #override\n\ + ~Ctrl Shift: do-volupdown(-50)\n\ + ~Ctrl Shift: do-volupdown(50)\n\ + Ctrl ~Shift: do-volupdown(-5)\n\ + Ctrl ~Shift: do-volupdown(5)\n\ + : MoveThumb()\n\ + : NotifyScroll(FullLength) EndScroll() +TiMidity*tune_bar.translations: #override\n\ + : do-tuneset()\n\ + : do-tuneslide()\n\ + : MoveThumb()\n\ + : NotifyScroll(FullLength) EndScroll() +TiMidity*file_simplemenu.load.label: ファイルのロード (Meta-N) +TiMidity*file_simplemenu.saveconfig.label: 設定保存 (Meta-S) +TiMidity*file_simplemenu.hidetext.label: メッセージの表示/非表示 (Ctrl-M) +TiMidity*file_simplemenu.hidetrace.label: トレース画面の表示/非表示 (Ctrl-T) +TiMidity*file_simplemenu.shuffle.label: シャッフル (Ctrl-S) +TiMidity*file_simplemenu.repeat.label: リピート (Ctrl-R) +TiMidity*file_simplemenu.autostart.label: 自動演奏 +TiMidity*file_simplemenu.autoquit.label: 自動終了 +TiMidity*file_simplemenu.filelist.label: 演奏ファイルリスト (Ctrl-F) +TiMidity*file_simplemenu.modes.label: 拡張設定モード (Ctrl-O) +TiMidity*file_simplemenu.about.label: TiMidity++ について +TiMidity*file_simplemenu.quit.label: 終了 (Meta-Q, Q) +TiMidity*load_dialog.OK.label: 確認 +TiMidity*load_dialog.add.label: すべてを追加 +TiMidity*load_dialog.cancel.label: キャンセル +TiMidity*flist_cmdbox.fplaybutton.label: 演奏 +TiMidity*flist_cmdbox.fdeletebutton.label: 削除 +TiMidity*flist_cmdbox.fdelallbutton.label: すべてを削除 +TiMidity*closebutton.label: 閉じる +TiMidity*modul_box.modul_lbl.label: モジュレーションコントロール +TiMidity*porta_box.porta_lbl.label: ポルタメントコントロール +TiMidity*nrpnv_box.nrpnv_lbl.label: NRPN ビブラート +TiMidity*reverb_box.reverb_lbl.label: リバーブエフェクトコントロール +TiMidity*chorus_box.chorus_lbl.label: コーラスエフェクトコントロール +TiMidity*chpressure_box.chpressure_lbl.label: チャンネルプレッシャー +TiMidity*overlapvoice_box.overlapv_lbl.label: 同一音の重複を許す +TiMidity*txtmeta_box.txtmeta_lbl.label: すべてのテキストメタイベントをトレース +TiMidity*base_form.translations: #override\n\ + ~Ctrl Metan: do-load()\n\ + ~Ctrl Metas: do-menu(101)\n\ + Ctrl r: do-menu(105)\n\ + Ctrl s: do-menu(104)\n\ + Ctrlt: do-menu(103)\n\ + Ctrlm: do-menu(102)\n\ + ~Ctrlq: do-quit()\n\ + ~Ctrlr: do-play()\n\ + Return: do-play()\n\ + KP_Enter: do-play()\n\ + ~Ctrlg: do-sndspec()\n\ + ~Ctrlspace: do-pause()\n\ + ~Ctrls: do-stop()\n\ + p: do-prev()\n\ + Left: do-prev()\n\ + ~Metan: do-next()\n\ + Right: do-next()\n\ + ~Ctrlf: do-forward()\n\ + ~Ctrlb: do-back()\n\ + ~Ctrlplus: do-key()\n\ + ~Shift-: do-key(1)\n\ + KP_Add: do-key()\n\ + KP_Subtract: do-key(1)\n\ + ~Ctrlgreater: do-speed()\n\ + ~Ctrlless: do-speed(1)\n\ + ~Ctrl ~Shifto: do-voice()\n\ + ~Ctrl Shifto: do-voice(1)\n\ + Ctrlo: do-options()\n\ + Ctrlf: do-filelist()\n\ + l: do-filelist()\n\ + a: do-about()\n\ + ~Ctrl ~Shiftv: do-volupdown(-10)\n\ + ~Ctrl Shiftv: do-volupdown(10)\n\ + Down: do-volupdown(-10)\n\ + Up: do-volupdown(10)\n\ + ~Ctrlx: do-exchange()\n\ + ~Ctrlt: do-toggletrace()\n\ + : do-resize() +TiMidity*load_dialog.value.translations: #override\n\ + ~CtrlReturn: do-chgdir()\n\ + ~CtrlKP_Enter: do-chgdir()\n\ + ~Ctrl ~MetaTab: do-complete() end-of-line()\n\ + Ctrl ~Shiftg: do-dialog-button(1)\n\ + BackSpace: do-backspace() delete-previous-character()\n\ + Escape: do-dialog-button(1) +TiMidity*trace.translations: #override\n\ + : do-toggletrace()\n\ + : do-revcaption()\n\ + : do-revcaption()\n\ + : draw-trace() +TiMidity*time_label.translations: #override\n\ + : do-menu(103)\n\ + : do-exchange() +TiMidity*popup_optbox.translations: #override\n\ + ~Ctrlc: do-closeparent()\n\ + ~Ctrlq: do-quit() +TiMidity*popup_fbox.translations: #override\n\ + ~Ctrlc: do-closeparent()\n\ + Up: do-flistmove(-1)\n\ + p: do-flistmove(-1)\n\ + Prior: do-flistmove(-5)\n\ + Right: do-flistmove(-5)\n\ + ~Ctrlr: do-fselect()\n\ + Return: do-fselect()\n\ + KP_Enter: do-fselect()\n\ + Ctrlm: do-fselect()\n\ + space: do-pause()\n\ + s: do-stop()\n\ + Down: do-flistmove(1)\n\ + n: do-flistmove(1)\n\ + Next: do-flistmove(5)\n\ + Left: do-flistmove(5)\n\ + d: do-fdelete()\n\ + ~Shiftv: do-volupdown(-10)\n\ + Shiftv: do-volupdown(10)\n\ + ~Ctrlf: do-forward()\n\ + ~Ctrlb: do-back()\n\ + ~Ctrlq: do-quit() +TiMidity*popup_abox.translations: #override\n\ + ~Ctrlc: do-closeparent()\n\ + KP_Enter: do-closeparent()\n\ + Return: do-closeparent() diff -ruN TiMidity++-2.4.1/TiMidity.ad TiMidity++-2.5.0/TiMidity.ad --- TiMidity++-2.4.1/TiMidity.ad Thu Jan 1 09:00:00 1970 +++ TiMidity++-2.5.0/TiMidity.ad Tue Aug 24 20:29:19 1999 @@ -0,0 +1,257 @@ +! TiMidity.ad -- app-defaults file for TiMidity++ XAW interface +! Created by Yoshishige Arai + +TiMidity*Command*international: True +TiMidity*file_simplemenu*international: True +TiMidity*Label*fontSet: -adobe-helvetica-bold-o-*-*-14-*-*-*-*-*-*-* +TiMidity*MenuButton*fontSet: -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-* +TiMidity*Command*fontSet: -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-* +TiMidity*List*fontSet: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-* +TiMidity*Text*fontSet: -misc-fixed-medium-r-normal--14-*-*-*-*-*-*-* +TiMidity*Form*fontSet: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-* +TiMidity*Text*background: gray82 +TiMidity*Text*scrollbar*background: gray82 +TiMidity*Scrollbar*background: gray82 +TiMidity*Label.foreground: black +TiMidity*Label.background: #CCFF33 +TiMidity*Command.background: gray78 +TiMidity*Dialog.Command.background: gray78 +TiMidity*Dialog.Text.background: gray82 +TiMidity*fontSet: -*--14-* +TiMidity*load_dialog.label.background: gray67 +TiMidity*international: True +TiMidity*Command.font: -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-* +TiMidity*Toggle.font: -adobe-helvetica-medium-o-*-*-12-*-*-*-*-*-*-* +TiMidity*MenuButton.translations:: highlight()\n\ + : reset()\n\ + Any: reset() fix-menu() PopupMenu() +TiMidity*menu_box.borderWidth: 0 +TiMidity*button_box.borderWidth: 0 +TiMidity*button_box.horizDistance: 4 +TiMidity*file_menubutton.menuName: file_simplemenu +TiMidity*file_menubutton.width: 60 +TiMidity*file_menubutton.height: 28 +TiMidity*file_menubutton.horizDistance: 6 +TiMidity*file_menubutton.vertDistance: 4 +TiMidity*file_menubutton.file_simplemenu*fontSet: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-* +TiMidity*title_menubutton.title_simplemenu*fontSet: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-* +TiMidity*title_menubutton*SmeBSB.font: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-* +TiMidity*title_menubutton.menuName: title_simplemenu +TiMidity*popup_abox.OK.label: OK +TiMidity*title_menubutton.width: 210 +TiMidity*title_menubutton.height: 28 +TiMidity*title_menubutton.resize: false +TiMidity*title_menubutton.horizDistance: 6 +TiMidity*title_menubutton.vertDistance: 4 +TiMidity*title_menubutton.fromHoriz: file_menubutton +TiMidity*time_label.width: 92 +TiMidity*time_label.height: 26 +TiMidity*time_label.resize: false +TiMidity*time_label.fromHoriz: title_menubutton +TiMidity*time_label.horizDistance: 1 +TiMidity*time_label.vertDistance: 4 +TiMidity*time_label.label: time / mode +TiMidity*button_box.height: 40 +TiMidity*play_button.width: 32 +TiMidity*play_button.height: 32 +TiMidity*play_button.horizDistance: 1 +TiMidity*play_button.vertDistance: 9 +TiMidity*pause_button.width: 32 +TiMidity*pause_button.height: 32 +TiMidity*pause_button.horizDistance: 1 +TiMidity*pause_button.vertDistance: 1 +TiMidity*stop_button.width: 32 +TiMidity*stop_button.height: 32 +TiMidity*stop_button.horizDistance: 1 +TiMidity*stop_button.vertDistance: 1 +TiMidity*prev_button.width: 32 +TiMidity*prev_button.height: 32 +TiMidity*prev_button.horizDistance: 1 +TiMidity*prev_button.vertDistance: 1 +TiMidity*back_button.width: 32 +TiMidity*back_button.height: 32 +TiMidity*back_button.horizDistance: 1 +TiMidity*back_button.vertDistance: 1 +TiMidity*fwd_button.width: 32 +TiMidity*fwd_button.height: 32 +TiMidity*fwd_button.horizDistance: 1 +TiMidity*fwd_button.vertDistance: 1 +TiMidity*next_button.width: 32 +TiMidity*next_button.height: 32 +TiMidity*next_button.horizDistance: 1 +TiMidity*next_button.vertDistance: 1 +TiMidity*quit_button.width: 32 +TiMidity*quit_button.height: 32 +TiMidity*quit_button.horizDistance: 1 +TiMidity*quit_button.vertDistance: 1 +TiMidity*random_button.width: 32 +TiMidity*random_button.height: 32 +TiMidity*random_button.horizDistance: 4 +TiMidity*random_button.vertDistance: 1 +TiMidity*repeat_button.width: 32 +TiMidity*repeat_button.height: 32 +TiMidity*repeat_button.horizDistance: 1 +TiMidity*repeat_button.vertDistance: 1 +TiMidity*lyric_text.fromVert: tune_box +TiMidity*lyric_text.borderWidth: 1 +TiMidity*lyric_text.vertDistance: 4 +TiMidity*lyric_text.horizDistance: 6 +TiMidity*lyric_text.height: 120 +TiMidity*lyric_text.scrollVertical: WhenNeeded +TiMidity*lyric_text.translations: #override\n\ + : do-deltext() +TiMidity*popup_optbox*international: True +TiMidity*lyric_text.international: True +TiMidity*volume_box*fontSet: -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-* +TiMidity*tune_box*fontSet: -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-* +TiMidity*volume_label.vertDistance: 0 +TiMidity*volume_box.vertDistance: 2 +TiMidity*volume_box.borderWidth: 0 +TiMidity*volume_label.borderWidth: 0 +TiMidity*volume_bar.length: 330 +TiMidity*tune_box.borderWidth: 0 +TiMidity*tune_label.label: ---- +TiMidity*tune_label.vertDistance: 0 +TiMidity*tune_label.horizDistance: 0 +TiMidity*tune_label0.horizDistance: 0 +TiMidity*tune_box.vertDistance: 2 +TiMidity*tune_bar.length: 330 +TiMidity*popup_load.title: TiMidity +TiMidity*popup_loadform.height: 400 +TiMidity*popup_option.title: TiMidity +TiMidity*popup_file.title: TiMidity +TiMidity*popup_about.title: Information +TiMidity*load_dialog.label: File Name +TiMidity*load_dialog.borderWidth: 0 +TiMidity*load_dialog.height: 132 +TiMidity*trace.vertDistance: 2 +TiMidity*trace.borderWidth: 1 +TiMidity*trace_vport.borderWidth: 1 +TiMidity*popup_loadform.load_dialog.label.fontSet: -adobe-helvetica-bold-o-*-*-14-*-*-*-*-*-*-* +TiMidity*popup_abox*fontSet: -adobe-helvetica-bold-o-*-*-14-*-*-*-*-*-*-* +TiMidity*cwd_label.font: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-* +TiMidity*time_label*cwd_info.font: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-* +TiMidity*time_label.fontSet: -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-* +TiMidity*BitmapDir: /usr/local/lib/timidity/bitmaps/ +TiMidity*volume_bar.translations: #override\n\ + ~Ctrl Shift: do-volupdown(-50)\n\ + ~Ctrl Shift: do-volupdown(50)\n\ + Ctrl ~Shift: do-volupdown(-5)\n\ + Ctrl ~Shift: do-volupdown(5)\n\ + : MoveThumb()\n\ + : NotifyScroll(FullLength) EndScroll() +TiMidity*tune_bar.translations: #override\n\ + : do-tuneset()\n\ + : do-tuneslide()\n\ + : MoveThumb()\n\ + : NotifyScroll(FullLength) EndScroll() +TiMidity*file_simplemenu.load.label: Load (Meta-N) +TiMidity*file_simplemenu.saveconfig.label: Save Config (Meta-S) +TiMidity*file_simplemenu.hidetext.label: (Un)Hide Messages (Ctrl-M) +TiMidity*file_simplemenu.hidetrace.label: (Un)Hide Trace (Ctrl-T) +TiMidity*file_simplemenu.shuffle.label: Shuffle (Ctrl-S) +TiMidity*file_simplemenu.repeat.label: Repeat (Ctrl-R) +TiMidity*file_simplemenu.autostart.label: Auto Start +TiMidity*file_simplemenu.autoquit.label: Auto Exit +TiMidity*file_simplemenu.filelist.label: File List (Ctrl-F) +TiMidity*file_simplemenu.modes.label: Extend Modes (Ctrl-O) +TiMidity*file_simplemenu.about.label: About +TiMidity*file_simplemenu.quit.label: Quit (Meta-Q, Q) +TiMidity*load_dialog.OK.label: OK +TiMidity*load_dialog.add.label: Add ALL +TiMidity*load_dialog.cancel.label: Cancel +TiMidity*flist_cmdbox.fplaybutton.label: Play +TiMidity*flist_cmdbox.fdeletebutton.label: Delete +TiMidity*flist_cmdbox.fdelallbutton.label: Delete ALL +TiMidity*closebutton.label: Close +TiMidity*modul_box.modul_lbl.label: Modulation control +TiMidity*porta_box.porta_lbl.label: Portamento control +TiMidity*nrpnv_box.nrpnv_lbl.label: NRPN Vibration +TiMidity*reverb_box.reverb_lbl.label: Reverb control +TiMidity*chorus_box.chorus_lbl.label: Chorus control +TiMidity*chpressure_box.chpressure_lbl.label: Channel Pressure control +TiMidity*overlapvoice_box.overlapv_lbl.label: Allow Multiple Same Notes +TiMidity*txtmeta_box.txtmeta_lbl.label: Tracing All Text Meta Events +TiMidity*base_form.translations: #override\n\ + ~Ctrl Metan: do-load()\n\ + ~Ctrl Metas: do-menu(101)\n\ + Ctrl r: do-menu(105)\n\ + Ctrl s: do-menu(104)\n\ + Ctrlt: do-menu(103)\n\ + Ctrlm: do-menu(102)\n\ + ~Ctrlq: do-quit()\n\ + ~Ctrlr: do-play()\n\ + Return: do-play()\n\ + KP_Enter: do-play()\n\ + ~Ctrlg: do-sndspec()\n\ + ~Ctrlspace: do-pause()\n\ + ~Ctrls: do-stop()\n\ + p: do-prev()\n\ + Left: do-prev()\n\ + ~Metan: do-next()\n\ + Right: do-next()\n\ + ~Ctrlf: do-forward()\n\ + ~Ctrlb: do-back()\n\ + ~Ctrlplus: do-key()\n\ + ~Shift-: do-key(1)\n\ + KP_Add: do-key()\n\ + KP_Subtract: do-key(1)\n\ + ~Ctrlgreater: do-speed()\n\ + ~Ctrlless: do-speed(1)\n\ + ~Ctrl ~Shifto: do-voice()\n\ + ~Ctrl Shifto: do-voice(1)\n\ + Ctrlo: do-options()\n\ + Ctrlf: do-filelist()\n\ + l: do-filelist()\n\ + a: do-about()\n\ + ~Ctrl ~Shiftv: do-volupdown(-10)\n\ + ~Ctrl Shiftv: do-volupdown(10)\n\ + Down: do-volupdown(-10)\n\ + Up: do-volupdown(10)\n\ + ~Ctrlx: do-exchange()\n\ + ~Ctrlt: do-toggletrace()\n\ + : do-resize() +TiMidity*load_dialog.value.translations: #override\n\ + ~CtrlReturn: do-chgdir()\n\ + ~CtrlKP_Enter: do-chgdir()\n\ + ~Ctrl ~MetaTab: do-complete() end-of-line()\n\ + Ctrl ~Shiftg: do-dialog-button(1)\n\ + BackSpace: do-backspace() delete-previous-character()\n\ + Escape: do-dialog-button(1) +TiMidity*trace.translations: #override\n\ + : do-toggletrace()\n\ + : do-revcaption()\n\ + : do-revcaption()\n\ + : draw-trace() +TiMidity*time_label.translations: #override\n\ + : do-menu(103)\n\ + : do-exchange() +TiMidity*popup_optbox.translations: #override\n\ + ~Ctrlc: do-closeparent()\n\ + ~Ctrlq: do-quit() +TiMidity*popup_fbox.translations: #override\n\ + ~Ctrlc: do-closeparent()\n\ + Up: do-flistmove(-1)\n\ + p: do-flistmove(-1)\n\ + Prior: do-flistmove(-5)\n\ + Right: do-flistmove(-5)\n\ + ~Ctrlr: do-fselect()\n\ + Return: do-fselect()\n\ + KP_Enter: do-fselect()\n\ + Ctrlm: do-fselect()\n\ + space: do-pause()\n\ + s: do-stop()\n\ + Down: do-flistmove(1)\n\ + n: do-flistmove(1)\n\ + Next: do-flistmove(5)\n\ + Left: do-flistmove(5)\n\ + d: do-fdelete()\n\ + ~Shiftv: do-volupdown(-10)\n\ + Shiftv: do-volupdown(10)\n\ + ~Ctrlf: do-forward()\n\ + ~Ctrlb: do-back()\n\ + ~Ctrlq: do-quit() +TiMidity*popup_abox.translations: #override\n\ + ~Ctrlc: do-closeparent()\n\ + KP_Enter: do-closeparent()\n\ + Return: do-closeparent() diff -ruN TiMidity++-2.4.1/configs/msc-config.h TiMidity++-2.5.0/configs/msc-config.h --- TiMidity++-2.4.1/configs/msc-config.h Thu Jan 1 09:00:00 1970 +++ TiMidity++-2.5.0/configs/msc-config.h Thu Aug 26 13:01:15 1999 @@ -0,0 +1,226 @@ +/* config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Define if type char is unsigned and you are not using gcc. */ +// #ifndef __CHAR_UNSIGNED__ +// #undef __CHAR_UNSIGNED__ +// #endif + +/* Define to empty if the keyword does not work. */ +// #undef const + +/* Define if you don't have vprintf but do have _doprnt. */ +// #undef HAVE_DOPRNT + +/* Define if you have a working `mmap' system call. */ +// #undef HAVE_MMAP + +/* Define if you have that is POSIX.1 compatible. */ +// #undef HAVE_SYS_WAIT_H + +/* Define if you have the vprintf function. */ +#define HAVE_VPRINTF + +/* Define as __inline if that's what the C compiler calls it. */ +#define inline + +/* Define to `long' if doesn't define. */ +// #undef off_t + +/* Define to `int' if doesn't define. */ +// #undef pid_t + +/* Define as the return type of signal handlers (int or void). */ +#define RETSIGTYPE int + +/* Define if the setvbuf function takes the buffering type as its second + argument and the buffer pointer as the third, as on System V + before release 3. */ +// #undef SETVBUF_REVERSED + +/* Define to `unsigned' if doesn't define. */ +// #undef size_t + +/* Define if you have the ANSI C header files. */ +// #undef STDC_HEADERS + +/* Define if you can safely include both and . */ +// #undef TIME_WITH_SYS_TIME + +/* Define if your processor stores words with the most significant + byte first (like Motorola and SPARC, unlike Intel and VAX). */ +// #undef WORDS_BIGENDIAN + +/* Define if the X Window System is missing or not being used. */ +#undef X_DISPLAY_MISSING + +/* Define if you have the XShmCreatePixmap function. */ +#undef HAVE_XSHMCREATEPIXMAP + +/* Define if you have the getcwd function. */ +#define HAVE_GETCWD + +/* Define if you have the gethostbyname function. */ +#undef HAVE_GETHOSTBYNAME + +/* Define if you have the getopt function. */ +#undef HAVE_GETOPT + +/* Define if you have the getpagesize function. */ +#undef HAVE_GETPAGESIZE + +/* Define if you have the gettimeofday function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define if you have the popen function. */ +#undef HAVE_POPEN + +/* Define if you have the select function. */ +#undef HAVE_SELECT + +/* Define if you have the signal function. */ +#undef HAVE_SIGNAL + +/* Define if you have the sleep function. */ +#undef HAVE_SLEEP + +/* Define if you have the snprintf function. */ +#undef HAVE_SNPRINTF + +/* Define if you have the socket function. */ +#undef HAVE_SOCKET + +/* Define if you have the strdup function. */ +#undef HAVE_STRDUP + +/* Define if you have the strerror function. */ +#undef HAVE_STRERROR + +/* Define if you have the strncasecmp function. */ +#define HAVE_STRNCASECMP + +/* Define if you have the strstr function. */ +#define HAVE_STRSTR + +/* Define if you have the usleep function. */ +#undef HAVE_USLEEP + +/* Define if you have the vsnprintf function. */ +#undef HAVE_VSNPRINTF + +/* Define if you have the header file. */ +#undef HAVE_X11_EXTENSIONS_XSHM_H + +/* Define if you have the header file. */ +#undef HAVE_CURSES_H + +/* Define if you have the header file. */ +#if defined(_MSC_VER) +#undef HAVE_DIRENT_H +#else +#define HAVE_DIRENT_H +#endif + +/* Define if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define if you have the header file. */ +#define HAVE_ERRNO_H + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H + +/* Define if you have the header file. */ +#undef HAVE_GETOPT_H + +/* Define if you have the header file. */ +#undef HAVE_GLOB_H + +/* Define if you have the header file. */ +#define HAVE_LIMITS_H + +/* Define if you have the header file. */ +#undef HAVE_MACHINE_ENDIAN_H + +/* Define if you have the header file. */ +#define HAVE_MALLOC_H + +/* Define if you have the header file. */ +#undef HAVE_NCURSES_H + +/* Define if you have the header file. */ +#undef HAVE_NCURSES_CURSES_H + +/* Define if you have the header file. */ +#undef HAVE_NDIR_H + +/* Define if you have the header file. */ +#undef HAVE_SLANG_SLANG_H + +/* Define if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define if you have the header file. */ +#undef HAVE_STROPTS_H + +/* Define if you have the header file. */ +#undef HAVE_SUN_AUDIOIO_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_AUDIOIO_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_DIR_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_IOCTL_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_IPC_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_NDIR_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_SHM_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_SOUNDCARD_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define if you have the header file. */ +#define HAVE_SYS_TYPES_H + +/* Define if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define if you have the ICE library (-lICE). */ +#undef HAVE_LIBICE + +/* Define if you have the X11 library (-lX11). */ +#undef HAVE_LIBX11 + +/* Define if you have the asound library (-lasound). */ +#undef HAVE_LIBASOUND + +/* Define if you have the m library (-lm). */ +#undef HAVE_LIBM + +/* Define if you have the socket library (-lsocket). */ +#undef HAVE_LIBSOCKET + +/* Define if you havee the header file for Win32. */ +#define HAVE_MMSYSTEM_H + +/* In VDS Macro AAA=BBB is not available. */ +#define TIMID_VERSION "2.5.0" +#define DEFAULT_PATH ".\\" +#define AU_W32 +#define WINSOCK +#define __W32READDIR__ +#undef URL_DIR_CACHE_ENABLE +#define ANOTHER_MAIN diff -ruN TiMidity++-2.4.1/configs/msc-config.h.in TiMidity++-2.5.0/configs/msc-config.h.in --- TiMidity++-2.4.1/configs/msc-config.h.in Thu Jan 1 09:00:00 1970 +++ TiMidity++-2.5.0/configs/msc-config.h.in Thu Aug 26 13:01:15 1999 @@ -0,0 +1,226 @@ +/* config.h.in. Generated automatically from configure.in by autoheader. */ + +/* Define if type char is unsigned and you are not using gcc. */ +// #ifndef __CHAR_UNSIGNED__ +// #undef __CHAR_UNSIGNED__ +// #endif + +/* Define to empty if the keyword does not work. */ +// #undef const + +/* Define if you don't have vprintf but do have _doprnt. */ +// #undef HAVE_DOPRNT + +/* Define if you have a working `mmap' system call. */ +// #undef HAVE_MMAP + +/* Define if you have that is POSIX.1 compatible. */ +// #undef HAVE_SYS_WAIT_H + +/* Define if you have the vprintf function. */ +#define HAVE_VPRINTF + +/* Define as __inline if that's what the C compiler calls it. */ +#define inline + +/* Define to `long' if doesn't define. */ +// #undef off_t + +/* Define to `int' if doesn't define. */ +// #undef pid_t + +/* Define as the return type of signal handlers (int or void). */ +#define RETSIGTYPE int + +/* Define if the setvbuf function takes the buffering type as its second + argument and the buffer pointer as the third, as on System V + before release 3. */ +// #undef SETVBUF_REVERSED + +/* Define to `unsigned' if doesn't define. */ +// #undef size_t + +/* Define if you have the ANSI C header files. */ +// #undef STDC_HEADERS + +/* Define if you can safely include both and . */ +// #undef TIME_WITH_SYS_TIME + +/* Define if your processor stores words with the most significant + byte first (like Motorola and SPARC, unlike Intel and VAX). */ +// #undef WORDS_BIGENDIAN + +/* Define if the X Window System is missing or not being used. */ +#undef X_DISPLAY_MISSING + +/* Define if you have the XShmCreatePixmap function. */ +#undef HAVE_XSHMCREATEPIXMAP + +/* Define if you have the getcwd function. */ +#define HAVE_GETCWD + +/* Define if you have the gethostbyname function. */ +#undef HAVE_GETHOSTBYNAME + +/* Define if you have the getopt function. */ +#undef HAVE_GETOPT + +/* Define if you have the getpagesize function. */ +#undef HAVE_GETPAGESIZE + +/* Define if you have the gettimeofday function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define if you have the popen function. */ +#undef HAVE_POPEN + +/* Define if you have the select function. */ +#undef HAVE_SELECT + +/* Define if you have the signal function. */ +#undef HAVE_SIGNAL + +/* Define if you have the sleep function. */ +#undef HAVE_SLEEP + +/* Define if you have the snprintf function. */ +#undef HAVE_SNPRINTF + +/* Define if you have the socket function. */ +#undef HAVE_SOCKET + +/* Define if you have the strdup function. */ +#undef HAVE_STRDUP + +/* Define if you have the strerror function. */ +#undef HAVE_STRERROR + +/* Define if you have the strncasecmp function. */ +#define HAVE_STRNCASECMP + +/* Define if you have the strstr function. */ +#define HAVE_STRSTR + +/* Define if you have the usleep function. */ +#undef HAVE_USLEEP + +/* Define if you have the vsnprintf function. */ +#undef HAVE_VSNPRINTF + +/* Define if you have the header file. */ +#undef HAVE_X11_EXTENSIONS_XSHM_H + +/* Define if you have the header file. */ +#undef HAVE_CURSES_H + +/* Define if you have the header file. */ +#if defined(_MSC_VER) +#undef HAVE_DIRENT_H +#else +#define HAVE_DIRENT_H +#endif + +/* Define if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define if you have the header file. */ +#define HAVE_ERRNO_H + +/* Define if you have the header file. */ +#define HAVE_FCNTL_H + +/* Define if you have the header file. */ +#undef HAVE_GETOPT_H + +/* Define if you have the header file. */ +#undef HAVE_GLOB_H + +/* Define if you have the header file. */ +#define HAVE_LIMITS_H + +/* Define if you have the header file. */ +#undef HAVE_MACHINE_ENDIAN_H + +/* Define if you have the header file. */ +#define HAVE_MALLOC_H + +/* Define if you have the header file. */ +#undef HAVE_NCURSES_H + +/* Define if you have the header file. */ +#undef HAVE_NCURSES_CURSES_H + +/* Define if you have the header file. */ +#undef HAVE_NDIR_H + +/* Define if you have the header file. */ +#undef HAVE_SLANG_SLANG_H + +/* Define if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define if you have the header file. */ +#undef HAVE_STROPTS_H + +/* Define if you have the header file. */ +#undef HAVE_SUN_AUDIOIO_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_AUDIOIO_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_DIR_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_IOCTL_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_IPC_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_NDIR_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_SHM_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_SOUNDCARD_H + +/* Define if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define if you have the header file. */ +#define HAVE_SYS_TYPES_H + +/* Define if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define if you have the ICE library (-lICE). */ +#undef HAVE_LIBICE + +/* Define if you have the X11 library (-lX11). */ +#undef HAVE_LIBX11 + +/* Define if you have the asound library (-lasound). */ +#undef HAVE_LIBASOUND + +/* Define if you have the m library (-lm). */ +#undef HAVE_LIBM + +/* Define if you have the socket library (-lsocket). */ +#undef HAVE_LIBSOCKET + +/* Define if you havee the header file for Win32. */ +#define HAVE_MMSYSTEM_H + +/* In VDS Macro AAA=BBB is not available. */ +#define TIMID_VERSION "@VERSION@" +#define DEFAULT_PATH ".\\" +#define AU_W32 +#define WINSOCK +#define __W32READDIR__ +#undef URL_DIR_CACHE_ENABLE +#define ANOTHER_MAIN diff -ruN TiMidity++-2.4.1/configs/msc-interface.h TiMidity++-2.5.0/configs/msc-interface.h --- TiMidity++-2.4.1/configs/msc-interface.h Thu Jan 1 09:00:00 1970 +++ TiMidity++-2.5.0/configs/msc-interface.h Thu Aug 26 13:01:15 1999 @@ -0,0 +1,42 @@ +/* interface.h. Generated automatically by configure. */ +/* Define if you have EMACS interface. */ +/* #undef IA_EMACS */ + +/* Define if you have GTK interface. */ +/* #undef IA_GTK */ + +/* Define if you have KMIDI interface. */ +/* #undef IA_KMIDI */ + +/* Define if you have MOTIF interface. */ +/* #undef IA_MOTIF */ + +/* Define if you have NCURSES interface. */ +/* #undef IA_NCURSES */ + +/* Define if you have PLUGIN interface. */ +/* #undef IA_PLUGIN */ + +/* Define if you have SLANG interface. */ +/* #undef IA_SLANG */ + +/* Define if you have TCLTK interface. */ +/* #undef IA_TCLTK */ + +/* Define if you have VT100 interface. */ +/* #undef IA_VT100 */ + +/* Define if you have XAW interface. */ +/* #undef IA_XAW */ + +/* Define if you have XSKIN interface. */ +/* #undef IA_XSKIN */ + +/* Define if you have DYNAMIC interface. */ +/* #undef IA_DYNAMIC */ + +/* Define if you have Windows32 GUI interface. */ +#define IA_W32GUI 1 + +/* Define if you have Remote MIDI interface. */ +/* #undef IA_SERVER */ diff -ruN TiMidity++-2.4.1/configs/msc-sjis.txt TiMidity++-2.5.0/configs/msc-sjis.txt --- TiMidity++-2.4.1/configs/msc-sjis.txt Thu Jan 1 09:00:00 1970 +++ TiMidity++-2.5.0/configs/msc-sjis.txt Thu Aug 26 13:01:15 1999 @@ -0,0 +1,185 @@ + Visual C++ 6.0 RpC + (by Masanao Izumo &2; exit 1; } @@ -1508,104 +1508,9 @@ ;; esac -echo $ac_n "checking for Cygwin environment""... $ac_c" 1>&6 -echo "configure:1513: checking for Cygwin environment" >&5 -if eval "test \"`echo '$''{'ac_cv_cygwin'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_cygwin=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_cygwin=no -fi -rm -f conftest* -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_cygwin" 1>&6 -CYGWIN= -test "$ac_cv_cygwin" = yes && CYGWIN=yes -echo $ac_n "checking for mingw32 environment""... $ac_c" 1>&6 -echo "configure:1546: checking for mingw32 environment" >&5 -if eval "test \"`echo '$''{'ac_cv_mingw32'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then - rm -rf conftest* - ac_cv_mingw32=yes -else - echo "configure: failed program was:" >&5 - cat conftest.$ac_ext >&5 - rm -rf conftest* - ac_cv_mingw32=no -fi -rm -f conftest* -rm -f conftest* -fi - -echo "$ac_t""$ac_cv_mingw32" 1>&6 -MINGW32= -test "$ac_cv_mingw32" = yes && MINGW32=yes - - -echo $ac_n "checking for executable suffix""... $ac_c" 1>&6 -echo "configure:1577: checking for executable suffix" >&5 -if eval "test \"`echo '$''{'ac_cv_exeext'+set}'`\" = set"; then - echo $ac_n "(cached) $ac_c" 1>&6 -else - if test "$CYGWIN" = yes || test "$MINGW32" = yes; then - ac_cv_exeext=.exe -else - rm -f conftest* - echo 'int main () { return 0; }' > conftest.$ac_ext - ac_cv_exeext= - if { (eval echo configure:1587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; }; then - for file in conftest.*; do - case $file in - *.c | *.o | *.obj) ;; - *) ac_cv_exeext=`echo $file | sed -e s/conftest//` ;; - esac - done - else - { echo "configure: error: installation or configuration problem: compiler cannot create executables." 1>&2; exit 1; } - fi - rm -f conftest* - test x"${ac_cv_exeext}" = x && ac_cv_exeext=no -fi -fi - -EXEEXT="" -test x"${ac_cv_exeext}" != xno && EXEEXT=${ac_cv_exeext} -echo "$ac_t""${ac_cv_exeext}" 1>&6 -ac_exeext=$EXEEXT - echo $ac_n "checking for sqrt in -lm""... $ac_c" 1>&6 -echo "configure:1609: checking for sqrt in -lm" >&5 +echo "configure:1514: checking for sqrt in -lm" >&5 ac_lib_var=`echo m'_'sqrt | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1613,7 +1518,7 @@ ac_save_LIBS="$LIBS" LIBS="-lm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1652,7 +1557,7 @@ fi echo $ac_n "checking for socket in -lsocket""... $ac_c" 1>&6 -echo "configure:1656: checking for socket in -lsocket" >&5 +echo "configure:1561: checking for socket in -lsocket" >&5 ac_lib_var=`echo socket'_'socket | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1660,7 +1565,7 @@ ac_save_LIBS="$LIBS" LIBS="-lsocket $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1699,7 +1604,7 @@ fi echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:1703: checking for dlopen in -ldl" >&5 +echo "configure:1608: checking for dlopen in -ldl" >&5 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1707,7 +1612,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1741,12 +1646,12 @@ for ac_func in gethostbyname do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:1745: checking for $ac_func" >&5 +echo "configure:1650: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1678: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -1791,7 +1696,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:1795: checking for gethostbyname in -lnsl" >&5 +echo "configure:1700: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -1799,7 +1704,7 @@ ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -1841,7 +1746,7 @@ done echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6 -echo "configure:1845: checking how to run the C preprocessor" >&5 +echo "configure:1750: checking how to run the C preprocessor" >&5 # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= @@ -1856,13 +1761,13 @@ # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1866: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1771: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1873,13 +1778,13 @@ rm -rf conftest* CPP="${CC-cc} -E -traditional-cpp" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1883: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1788: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1890,13 +1795,13 @@ rm -rf conftest* CPP="${CC-cc} -nologo -E" cat > conftest.$ac_ext < Syntax Error EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1900: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1805: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then : @@ -1925,7 +1830,7 @@ # Uses ac_ vars as temps to allow command line to override cache and checks. # --without-x overrides everything else, but does not touch the cache. echo $ac_n "checking for X""... $ac_c" 1>&6 -echo "configure:1929: checking for X" >&5 +echo "configure:1834: checking for X" >&5 # Check whether --with-x or --without-x was given. if test "${with_x+set}" = set; then @@ -1987,12 +1892,12 @@ # First, try using that file with no special directory specified. cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:1996: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:1901: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -2061,14 +1966,14 @@ ac_save_LIBS="$LIBS" LIBS="-l$x_direct_test_library $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:1977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* LIBS="$ac_save_LIBS" # We can link X programs with no special library path. @@ -2174,17 +2079,17 @@ case "`(uname -sr) 2>/dev/null`" in "SunOS 5"*) echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6 -echo "configure:2178: checking whether -R must be followed by a space" >&5 +echo "configure:2083: checking whether -R must be followed by a space" >&5 ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_nospace=yes else @@ -2200,14 +2105,14 @@ else LIBS="$ac_xsave_LIBS -R $x_libraries" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2116: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_R_space=yes else @@ -2239,7 +2144,7 @@ # libraries were built with DECnet support. And karl@cs.umb.edu says # the Alpha needs dnet_stub (dnet does not exist). echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6 -echo "configure:2243: checking for dnet_ntoa in -ldnet" >&5 +echo "configure:2148: checking for dnet_ntoa in -ldnet" >&5 ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2247,7 +2152,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldnet $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2167: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2280,7 +2185,7 @@ if test $ac_cv_lib_dnet_dnet_ntoa = no; then echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6 -echo "configure:2284: checking for dnet_ntoa in -ldnet_stub" >&5 +echo "configure:2189: checking for dnet_ntoa in -ldnet_stub" >&5 ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2288,7 +2193,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldnet_stub $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2328,12 +2233,12 @@ # The nsl library prevents programs from opening the X display # on Irix 5.2, according to dickey@clark.net. echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6 -echo "configure:2332: checking for gethostbyname" >&5 +echo "configure:2237: checking for gethostbyname" >&5 if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2265: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_gethostbyname=yes" else @@ -2377,7 +2282,7 @@ if test $ac_cv_func_gethostbyname = no; then echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6 -echo "configure:2381: checking for gethostbyname in -lnsl" >&5 +echo "configure:2286: checking for gethostbyname in -lnsl" >&5 ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2385,7 +2290,7 @@ ac_save_LIBS="$LIBS" LIBS="-lnsl $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2305: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2426,12 +2331,12 @@ # -lsocket must be given before -lnsl if both are needed. # We assume that if connect needs -lnsl, so does gethostbyname. echo $ac_n "checking for connect""... $ac_c" 1>&6 -echo "configure:2430: checking for connect" >&5 +echo "configure:2335: checking for connect" >&5 if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_connect=yes" else @@ -2475,7 +2380,7 @@ if test $ac_cv_func_connect = no; then echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6 -echo "configure:2479: checking for connect in -lsocket" >&5 +echo "configure:2384: checking for connect in -lsocket" >&5 ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2483,7 +2388,7 @@ ac_save_LIBS="$LIBS" LIBS="-lsocket $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2518,12 +2423,12 @@ # gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX. echo $ac_n "checking for remove""... $ac_c" 1>&6 -echo "configure:2522: checking for remove" >&5 +echo "configure:2427: checking for remove" >&5 if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2455: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_remove=yes" else @@ -2567,7 +2472,7 @@ if test $ac_cv_func_remove = no; then echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6 -echo "configure:2571: checking for remove in -lposix" >&5 +echo "configure:2476: checking for remove in -lposix" >&5 ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2575,7 +2480,7 @@ ac_save_LIBS="$LIBS" LIBS="-lposix $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2610,12 +2515,12 @@ # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. echo $ac_n "checking for shmat""... $ac_c" 1>&6 -echo "configure:2614: checking for shmat" >&5 +echo "configure:2519: checking for shmat" >&5 if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shmat=yes" else @@ -2659,7 +2564,7 @@ if test $ac_cv_func_shmat = no; then echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6 -echo "configure:2663: checking for shmat in -lipc" >&5 +echo "configure:2568: checking for shmat in -lipc" >&5 ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2667,7 +2572,7 @@ ac_save_LIBS="$LIBS" LIBS="-lipc $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2587: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2711,7 +2616,7 @@ # libraries we check for below, so use a different variable. # --interran@uluru.Stanford.EDU, kb@cs.umb.edu. echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:2715: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:2620: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2719,7 +2624,7 @@ ac_save_LIBS="$LIBS" LIBS="-lICE $X_EXTRA_LIBS $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2778,7 +2683,7 @@ fi echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6 -echo "configure:2782: checking for XOpenDisplay in -lX11" >&5 +echo "configure:2687: checking for XOpenDisplay in -lX11" >&5 ac_lib_var=`echo X11'_'XOpenDisplay | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2786,7 +2691,7 @@ ac_save_LIBS="$LIBS" LIBS="-lX11 $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2706: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2825,12 +2730,12 @@ fi echo $ac_n "checking X11 version 6""... $ac_c" 1>&6 -echo "configure:2829: checking X11 version 6" >&5 +echo "configure:2734: checking X11 version 6" >&5 if eval "test \"`echo '$''{'timidity_cv_x11_version_6'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < int main() { @@ -2840,7 +2745,7 @@ ; return 0; } EOF -if { (eval echo configure:2844: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2749: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* timidity_cv_x11_version_6=yes else @@ -2860,7 +2765,7 @@ KEEPLIBS=$LIBS echo $ac_n "checking for XShapeCombineMask in -lXext""... $ac_c" 1>&6 -echo "configure:2864: checking for XShapeCombineMask in -lXext" >&5 +echo "configure:2769: checking for XShapeCombineMask in -lXext" >&5 ac_lib_var=`echo Xext'_'XShapeCombineMask | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2868,7 +2773,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXext $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2788: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2901,7 +2806,7 @@ fi echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6 -echo "configure:2905: checking for IceConnectionNumber in -lICE" >&5 +echo "configure:2810: checking for IceConnectionNumber in -lICE" >&5 ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2909,7 +2814,7 @@ ac_save_LIBS="$LIBS" LIBS="-lICE $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2829: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2948,7 +2853,7 @@ fi echo $ac_n "checking for SmcOpenConnection in -lSM""... $ac_c" 1>&6 -echo "configure:2952: checking for SmcOpenConnection in -lSM" >&5 +echo "configure:2857: checking for SmcOpenConnection in -lSM" >&5 ac_lib_var=`echo SM'_'SmcOpenConnection | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2956,7 +2861,7 @@ ac_save_LIBS="$LIBS" LIBS="-lSM $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2876: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -2989,7 +2894,7 @@ fi echo $ac_n "checking for XtVaAppInitialize in -lXt""... $ac_c" 1>&6 -echo "configure:2993: checking for XtVaAppInitialize in -lXt" >&5 +echo "configure:2898: checking for XtVaAppInitialize in -lXt" >&5 ac_lib_var=`echo Xt'_'XtVaAppInitialize | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -2997,7 +2902,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXt $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3030,7 +2935,7 @@ fi echo $ac_n "checking for XmuInternAtom in -lXmu""... $ac_c" 1>&6 -echo "configure:3034: checking for XmuInternAtom in -lXmu" >&5 +echo "configure:2939: checking for XmuInternAtom in -lXmu" >&5 ac_lib_var=`echo Xmu'_'XmuInternAtom | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3038,7 +2943,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXmu $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:2958: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3072,12 +2977,12 @@ for ac_func in XmuRegisterExternalAgent do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3076: checking for $ac_func" >&5 +echo "configure:2981: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3009: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3125,7 +3030,7 @@ done echo $ac_n "checking for XawInitializeWidgetSet in -lXaw3d""... $ac_c" 1>&6 -echo "configure:3129: checking for XawInitializeWidgetSet in -lXaw3d" >&5 +echo "configure:3034: checking for XawInitializeWidgetSet in -lXaw3d" >&5 ac_lib_var=`echo Xaw3d'_'XawInitializeWidgetSet | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3133,7 +3038,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXaw3d $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3163,7 +3068,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for XawInitializeWidgetSet in -lXaw""... $ac_c" 1>&6 -echo "configure:3167: checking for XawInitializeWidgetSet in -lXaw" >&5 +echo "configure:3072: checking for XawInitializeWidgetSet in -lXaw" >&5 ac_lib_var=`echo Xaw'_'XawInitializeWidgetSet | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3171,7 +3076,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXaw $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3091: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3206,7 +3111,7 @@ fi echo $ac_n "checking for XmCreateForm in -lXm""... $ac_c" 1>&6 -echo "configure:3210: checking for XmCreateForm in -lXm" >&5 +echo "configure:3115: checking for XmCreateForm in -lXm" >&5 ac_lib_var=`echo Xm'_'XmCreateForm | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3214,7 +3119,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3134: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3249,12 +3154,12 @@ for ac_func in XShmCreatePixmap do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:3253: checking for $ac_func" >&5 +echo "configure:3158: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -3310,12 +3215,12 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr that defines DIR""... $ac_c" 1>&6 -echo "configure:3314: checking for $ac_hdr that defines DIR" >&5 +echo "configure:3219: checking for $ac_hdr that defines DIR" >&5 if eval "test \"`echo '$''{'ac_cv_header_dirent_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include <$ac_hdr> @@ -3323,7 +3228,7 @@ DIR *dirp = 0; ; return 0; } EOF -if { (eval echo configure:3327: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3232: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* eval "ac_cv_header_dirent_$ac_safe=yes" else @@ -3348,7 +3253,7 @@ # Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. if test $ac_header_dirent = dirent.h; then echo $ac_n "checking for opendir in -ldir""... $ac_c" 1>&6 -echo "configure:3352: checking for opendir in -ldir" >&5 +echo "configure:3257: checking for opendir in -ldir" >&5 ac_lib_var=`echo dir'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3356,7 +3261,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldir $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3389,7 +3294,7 @@ else echo $ac_n "checking for opendir in -lx""... $ac_c" 1>&6 -echo "configure:3393: checking for opendir in -lx" >&5 +echo "configure:3298: checking for opendir in -lx" >&5 ac_lib_var=`echo x'_'opendir | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -3397,7 +3302,7 @@ ac_save_LIBS="$LIBS" LIBS="-lx $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:3317: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -3431,12 +3336,12 @@ fi echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6 -echo "configure:3435: checking for ANSI C header files" >&5 +echo "configure:3340: checking for ANSI C header files" >&5 if eval "test \"`echo '$''{'ac_cv_header_stdc'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3444,7 +3349,7 @@ #include EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3448: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3353: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3461,7 +3366,7 @@ if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3479,7 +3384,7 @@ if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat > conftest.$ac_ext < EOF @@ -3500,7 +3405,7 @@ : else cat > conftest.$ac_ext < #define ISLOWER(c) ('a' <= (c) && (c) <= 'z') @@ -3511,7 +3416,7 @@ exit (0); } EOF -if { (eval echo configure:3515: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3420: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -3535,12 +3440,12 @@ fi echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6 -echo "configure:3539: checking for sys/wait.h that is POSIX.1 compatible" >&5 +echo "configure:3444: checking for sys/wait.h that is POSIX.1 compatible" >&5 if eval "test \"`echo '$''{'ac_cv_header_sys_wait_h'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -3556,7 +3461,7 @@ s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; ; return 0; } EOF -if { (eval echo configure:3560: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3465: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_sys_wait_h=yes else @@ -3584,17 +3489,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:3588: checking for $ac_hdr" >&5 +echo "configure:3493: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3598: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3503: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3622,17 +3527,17 @@ ac_safe=`echo "string.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for string.h""... $ac_c" 1>&6 -echo "configure:3626: checking for string.h" >&5 +echo "configure:3531: checking for string.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:3636: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:3541: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -3656,12 +3561,12 @@ echo $ac_n "checking for working const""... $ac_c" 1>&6 -echo "configure:3660: checking for working const" >&5 +echo "configure:3565: checking for working const" >&5 if eval "test \"`echo '$''{'ac_cv_c_const'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3619: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_const=yes else @@ -3731,14 +3636,14 @@ fi echo $ac_n "checking whether char is unsigned""... $ac_c" 1>&6 -echo "configure:3735: checking whether char is unsigned" >&5 +echo "configure:3640: checking whether char is unsigned" >&5 if eval "test \"`echo '$''{'ac_cv_c_char_unsigned'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else if test "$GCC" = yes; then # GCC predefines this symbol on systems where it applies. cat > conftest.$ac_ext <&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3679: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_char_unsigned=yes else @@ -3794,14 +3699,14 @@ fi echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6 -echo "configure:3798: checking whether byte ordering is bigendian" >&5 +echo "configure:3703: checking whether byte ordering is bigendian" >&5 if eval "test \"`echo '$''{'ac_cv_c_bigendian'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_bigendian=unknown # See if sys/param.h defines the BYTE_ORDER macro. cat > conftest.$ac_ext < #include @@ -3812,11 +3717,11 @@ #endif ; return 0; } EOF -if { (eval echo configure:3816: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3721: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* # It does; now see whether it defined to BIG_ENDIAN or not. cat > conftest.$ac_ext < #include @@ -3827,7 +3732,7 @@ #endif ; return 0; } EOF -if { (eval echo configure:3831: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3736: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_bigendian=yes else @@ -3847,7 +3752,7 @@ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:3769: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_c_bigendian=no else @@ -3884,21 +3789,21 @@ fi echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:3888: checking for inline" >&5 +echo "configure:3793: checking for inline" >&5 if eval "test \"`echo '$''{'ac_cv_c_inline'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_cv_c_inline=no for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3807: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_c_inline=$ac_kw; break else @@ -3924,12 +3829,12 @@ esac echo $ac_n "checking for off_t""... $ac_c" 1>&6 -echo "configure:3928: checking for off_t" >&5 +echo "configure:3833: checking for off_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_off_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3957,12 +3862,12 @@ fi echo $ac_n "checking for pid_t""... $ac_c" 1>&6 -echo "configure:3961: checking for pid_t" >&5 +echo "configure:3866: checking for pid_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_pid_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -3990,12 +3895,12 @@ fi echo $ac_n "checking for size_t""... $ac_c" 1>&6 -echo "configure:3994: checking for size_t" >&5 +echo "configure:3899: checking for size_t" >&5 if eval "test \"`echo '$''{'ac_cv_type_size_t'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #if STDC_HEADERS @@ -4023,12 +3928,12 @@ fi echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6 -echo "configure:4027: checking whether time.h and sys/time.h may both be included" >&5 +echo "configure:3932: checking whether time.h and sys/time.h may both be included" >&5 if eval "test \"`echo '$''{'ac_cv_header_time'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4037,7 +3942,7 @@ struct tm *tp; ; return 0; } EOF -if { (eval echo configure:4041: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3946: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_header_time=yes else @@ -4059,19 +3964,19 @@ echo $ac_n "checking volatile declaration""... $ac_c" 1>&6 -echo "configure:4063: checking volatile declaration" >&5 +echo "configure:3968: checking volatile declaration" >&5 if eval "test \"`echo '$''{'timidity_cv_type_volatile'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:3980: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* timidity_cv_type_volatile=yes else @@ -4089,12 +3994,12 @@ fi echo $ac_n "checking union semun declaration""... $ac_c" 1>&6 -echo "configure:4093: checking union semun declaration" >&5 +echo "configure:3998: checking union semun declaration" >&5 if eval "test \"`echo '$''{'timidity_cv_type_union_semun'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4103,7 +4008,7 @@ union semun x ; return 0; } EOF -if { (eval echo configure:4107: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4012: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* timidity_cv_type_union_semun=yes else @@ -4122,13 +4027,13 @@ if test $ac_cv_prog_gcc = yes; then echo $ac_n "checking whether ${CC-cc} needs -traditional""... $ac_c" 1>&6 -echo "configure:4126: checking whether ${CC-cc} needs -traditional" >&5 +echo "configure:4031: checking whether ${CC-cc} needs -traditional" >&5 if eval "test \"`echo '$''{'ac_cv_prog_gcc_traditional'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else ac_pattern="Autoconf.*'x'" cat > conftest.$ac_ext < Autoconf TIOCGETP @@ -4146,7 +4051,7 @@ if test $ac_cv_prog_gcc_traditional = no; then cat > conftest.$ac_ext < Autoconf TCGETA @@ -4168,7 +4073,7 @@ fi echo $ac_n "checking for 8-bit clean memcmp""... $ac_c" 1>&6 -echo "configure:4172: checking for 8-bit clean memcmp" >&5 +echo "configure:4077: checking for 8-bit clean memcmp" >&5 if eval "test \"`echo '$''{'ac_cv_func_memcmp_clean'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4176,7 +4081,7 @@ ac_cv_func_memcmp_clean=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_memcmp_clean=yes else @@ -4207,17 +4112,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:4211: checking for $ac_hdr" >&5 +echo "configure:4116: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:4221: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:4126: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -4246,12 +4151,12 @@ for ac_func in getpagesize do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4250: checking for $ac_func" >&5 +echo "configure:4155: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4299,7 +4204,7 @@ done echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:4303: checking for working mmap" >&5 +echo "configure:4208: checking for working mmap" >&5 if eval "test \"`echo '$''{'ac_cv_func_mmap_fixed_mapped'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4307,7 +4212,7 @@ ac_cv_func_mmap_fixed_mapped=no else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_mmap_fixed_mapped=yes else @@ -4470,7 +4375,7 @@ fi echo $ac_n "checking whether setvbuf arguments are reversed""... $ac_c" 1>&6 -echo "configure:4474: checking whether setvbuf arguments are reversed" >&5 +echo "configure:4379: checking whether setvbuf arguments are reversed" >&5 if eval "test \"`echo '$''{'ac_cv_func_setvbuf_reversed'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -4478,7 +4383,7 @@ { echo "configure: error: can not run test program while cross compiling" 1>&2; exit 1; } else cat > conftest.$ac_ext < /* If setvbuf has the reversed format, exit 0. */ @@ -4492,7 +4397,7 @@ exit(0); /* Non-reversed systems segv here. */ } EOF -if { (eval echo configure:4496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:4401: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then ac_cv_func_setvbuf_reversed=yes else @@ -4516,12 +4421,12 @@ fi echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6 -echo "configure:4520: checking return type of signal handlers" >&5 +echo "configure:4425: checking return type of signal handlers" >&5 if eval "test \"`echo '$''{'ac_cv_type_signal'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < #include @@ -4538,7 +4443,7 @@ int i; ; return 0; } EOF -if { (eval echo configure:4542: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:4447: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* ac_cv_type_signal=void else @@ -4557,12 +4462,12 @@ echo $ac_n "checking for vprintf""... $ac_c" 1>&6 -echo "configure:4561: checking for vprintf" >&5 +echo "configure:4466: checking for vprintf" >&5 if eval "test \"`echo '$''{'ac_cv_func_vprintf'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4494: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_vprintf=yes" else @@ -4609,12 +4514,12 @@ if test "$ac_cv_func_vprintf" != yes; then echo $ac_n "checking for _doprnt""... $ac_c" 1>&6 -echo "configure:4613: checking for _doprnt" >&5 +echo "configure:4518: checking for _doprnt" >&5 if eval "test \"`echo '$''{'ac_cv_func__doprnt'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func__doprnt=yes" else @@ -4665,12 +4570,12 @@ sleep usleep strncasecmp strerror getopt getcwd popen signal isatty do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:4669: checking for $ac_func" >&5 +echo "configure:4574: checking for $ac_func" >&5 if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4602: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=yes" else @@ -4722,12 +4627,12 @@ case "$ac_cv_header_dirent_dirent_h$ac_cv_header_dirent_sys_ndir_h$ac_cv_header_dirent_sys_dir_h$ac_cv_header_dirent_ndir_h" in *yes*) echo $ac_n "checking for opendir""... $ac_c" 1>&6 -echo "configure:4726: checking for opendir" >&5 +echo "configure:4631: checking for opendir" >&5 if eval "test \"`echo '$''{'ac_cv_func_opendir'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_opendir=yes" else @@ -4778,12 +4683,12 @@ esac if test "x$enable_network" = "xyes"; then echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:4782: checking for socket" >&5 +echo "configure:4687: checking for socket" >&5 if eval "test \"`echo '$''{'ac_cv_func_socket'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_socket=yes" else @@ -4824,7 +4729,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for WSAStartup in -lwsock32""... $ac_c" 1>&6 -echo "configure:4828: checking for WSAStartup in -lwsock32" >&5 +echo "configure:4733: checking for WSAStartup in -lwsock32" >&5 ac_lib_var=`echo wsock32'_'WSAStartup | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'wapi_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -4832,7 +4737,7 @@ ac_save_LIBS="$LIBS" LIBS="-lwsock32 $LIBS" cat > conftest.$ac_ext < #include @@ -4841,7 +4746,7 @@ WSAStartup(0,0); ; return 0; } EOF -if { (eval echo configure:4845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:4750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "wapi_cv_lib_$ac_lib_var=yes" else @@ -4974,7 +4879,7 @@ # Extract the first word of "esd-config", so it can be a program name with args. set dummy esd-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:4978: checking for $ac_word" >&5 +echo "configure:4883: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_ESD_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5009,7 +4914,7 @@ min_esd_version=0.2.7 echo $ac_n "checking for ESD - version >= $min_esd_version""... $ac_c" 1>&6 -echo "configure:5013: checking for ESD - version >= $min_esd_version" >&5 +echo "configure:4918: checking for ESD - version >= $min_esd_version" >&5 no_esd="" if test "$ESD_CONFIG" = "no" ; then no_esd=yes @@ -5033,7 +4938,7 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -5091,7 +4996,7 @@ EOF -if { (eval echo configure:5095: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:5000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -5125,7 +5030,7 @@ CFLAGS="$CFLAGS $ESD_CFLAGS" LIBS="$LIBS $ESD_LIBS" cat > conftest.$ac_ext < @@ -5135,7 +5040,7 @@ return 0; ; return 0; } EOF -if { (eval echo configure:5139: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5044: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding ESD or finding the wrong" @@ -5191,7 +5096,7 @@ echo $ac_n "checking whether to enable audio""... $ac_c" 1>&6 -echo "configure:5195: checking whether to enable audio" >&5 +echo "configure:5100: checking whether to enable audio" >&5 # Check whether --enable-audio or --disable-audio was given. if test "${enable_audio+set}" = set; then enableval="$enable_audio" @@ -5259,7 +5164,7 @@ echo $ac_n "checking for ALSA CFLAGS""... $ac_c" 1>&6 -echo "configure:5263: checking for ALSA CFLAGS" >&5 +echo "configure:5168: checking for ALSA CFLAGS" >&5 if test "$alsa_inc_prefix" != "" ; then ALSA_CFLAGS="$ALSA_CFLAGS -I$alsa_inc_prefix" CFLAGS="$CFLAGS -I$alsa_inc_prefix" @@ -5267,7 +5172,7 @@ echo "$ac_t""$ALSA_CFLAGS" 1>&6 echo $ac_n "checking for ALSA LDFLAGS""... $ac_c" 1>&6 -echo "configure:5271: checking for ALSA LDFLAGS" >&5 +echo "configure:5176: checking for ALSA LDFLAGS" >&5 if test "$alsa_prefix" != "" ; then ALSA_LIBS="$ALSA_LIBS -L$alsa_prefix" LIBS="-L$alsa_prefix" @@ -5279,7 +5184,7 @@ min_alsa_version=0.1.1 echo $ac_n "checking for libasound headers version >= $min_alsa_version""... $ac_c" 1>&6 -echo "configure:5283: checking for libasound headers version >= $min_alsa_version" >&5 +echo "configure:5188: checking for libasound headers version >= $min_alsa_version" >&5 no_alsa="" alsa_min_major_version=`echo $min_alsa_version | \ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\1/'` @@ -5289,7 +5194,7 @@ sed 's/\([0-9]*\).\([0-9]*\).\([0-9]*\)/\3/'` cat > conftest.$ac_ext < @@ -5330,7 +5235,7 @@ ; return 0; } EOF -if { (eval echo configure:5334: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then +if { (eval echo configure:5239: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then rm -rf conftest* echo "$ac_t""found." 1>&6 have_alsa=yes @@ -5344,7 +5249,7 @@ rm -f conftest* echo $ac_n "checking for snd_cards in -lasound""... $ac_c" 1>&6 -echo "configure:5348: checking for snd_cards in -lasound" >&5 +echo "configure:5253: checking for snd_cards in -lasound" >&5 ac_lib_var=`echo asound'_'snd_cards | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5352,7 +5257,7 @@ ac_save_LIBS="$LIBS" LIBS="-lasound $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5272: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5480,7 +5385,11 @@ ;; *-*-cygwin32*) EXTRADEFS="$EXTRADEFS -DAU_W32" - SYSEXTRAS="$SYSEXTRAS w32_a.c" + if test "x$enable_w32gui" = xyes; then + SYSEXTRAS="$SYSEXTRAS w32g_a.c" + else + SYSEXTRAS="$SYSEXTRAS w32_a.c" + fi EXTRALIBS="$EXTRALIBS -lwinmm" echo "$ac_t""yes cygnus" 1>&6 ;; @@ -5518,12 +5427,12 @@ have_dl=no echo $ac_n "checking for LoadLibraryExA""... $ac_c" 1>&6 -echo "configure:5522: checking for LoadLibraryExA" >&5 +echo "configure:5431: checking for LoadLibraryExA" >&5 if eval "test \"`echo '$''{'wapi_cv_func_LoadLibraryExA'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < @@ -5532,7 +5441,7 @@ LoadLibraryExA(0,0,0); ; return 0; } EOF -if { (eval echo configure:5536: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5445: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* wapi_cv_func_LoadLibraryExA=yes else @@ -5555,12 +5464,12 @@ if test "$have_dl" = "no"; then echo $ac_n "checking for shl_load""... $ac_c" 1>&6 -echo "configure:5559: checking for shl_load" >&5 +echo "configure:5468: checking for shl_load" >&5 if eval "test \"`echo '$''{'ac_cv_func_shl_load'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5496: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_shl_load=yes" else @@ -5608,12 +5517,12 @@ fi if test "$have_dl" = "no"; then echo $ac_n "checking for dlopen""... $ac_c" 1>&6 -echo "configure:5612: checking for dlopen" >&5 +echo "configure:5521: checking for dlopen" >&5 if eval "test \"`echo '$''{'ac_cv_func_dlopen'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5549: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_dlopen=yes" else @@ -5658,12 +5567,12 @@ fi if test "$have_dl" = "no"; then echo $ac_n "checking for dld_init""... $ac_c" 1>&6 -echo "configure:5662: checking for dld_init" >&5 +echo "configure:5571: checking for dld_init" >&5 if eval "test \"`echo '$''{'ac_cv_func_dld_init'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5599: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_dld_init=yes" else @@ -5708,7 +5617,7 @@ fi if test "$have_dl" = "no"; then echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 -echo "configure:5712: checking for dld_init in -ldld" >&5 +echo "configure:5621: checking for dld_init in -ldld" >&5 ac_lib_var=`echo dld'_'dld_init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5716,7 +5625,7 @@ ac_save_LIBS="$LIBS" LIBS="-ldld $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5640: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5750,13 +5659,13 @@ fi echo $ac_n "checking dynamic link method""... $ac_c" 1>&6 -echo "configure:5754: checking dynamic link method" >&5 +echo "configure:5663: checking dynamic link method" >&5 case "$have_dl" in dlopen) echo "$ac_t""use dl_dlopen.c" 1>&6 SYSEXTRAS="$SYSEXTRAS dl_dlopen.c" echo $ac_n "checking whether your dlsym() needs a leading underscore""... $ac_c" 1>&6 -echo "configure:5760: checking whether your dlsym() needs a leading underscore" >&5 +echo "configure:5669: checking whether your dlsym() needs a leading underscore" >&5 if eval "test \"`echo '$''{'timidity_cv_func_dlsym_underscore'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -5904,17 +5813,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:5908: checking for $ac_hdr" >&5 +echo "configure:5817: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:5918: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:5827: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -5955,7 +5864,7 @@ esac echo $ac_n "checking for initscr in -lncurses""... $ac_c" 1>&6 -echo "configure:5959: checking for initscr in -lncurses" >&5 +echo "configure:5868: checking for initscr in -lncurses" >&5 ac_lib_var=`echo ncurses'_'initscr | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -5963,7 +5872,7 @@ ac_save_LIBS="$LIBS" LIBS="-lncurses $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5887: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -5993,7 +5902,7 @@ else echo "$ac_t""no" 1>&6 echo $ac_n "checking for PDC_set_ctrl_break in -lcurses""... $ac_c" 1>&6 -echo "configure:5997: checking for PDC_set_ctrl_break in -lcurses" >&5 +echo "configure:5906: checking for PDC_set_ctrl_break in -lcurses" >&5 ac_lib_var=`echo curses'_'PDC_set_ctrl_break | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6001,7 +5910,7 @@ ac_save_LIBS="$LIBS" LIBS="-lcurses $lib_user32_test $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:5925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6099,7 +6008,7 @@ if test "${enable_slang+set}" = set; then enableval="$enable_slang" case "x$enable_slang" in xyes|xdynamic) echo $ac_n "checking for SLang_init_tty in -lslang""... $ac_c" 1>&6 -echo "configure:6103: checking for SLang_init_tty in -lslang" >&5 +echo "configure:6012: checking for SLang_init_tty in -lslang" >&5 ac_lib_var=`echo slang'_'SLang_init_tty | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6107,7 +6016,7 @@ ac_save_LIBS="$LIBS" LIBS="-lslang $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6031: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6144,17 +6053,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:6148: checking for $ac_hdr" >&5 +echo "configure:6057: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:6158: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:6067: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -6206,7 +6115,7 @@ dynamic_targets="$dynamic_targets interface_s.\$(so)" s_so_libs="-lslang" echo $ac_n "checking for initscr in -ltermcap""... $ac_c" 1>&6 -echo "configure:6210: checking for initscr in -ltermcap" >&5 +echo "configure:6119: checking for initscr in -ltermcap" >&5 ac_lib_var=`echo termcap'_'initscr | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6214,7 +6123,7 @@ ac_save_LIBS="$LIBS" LIBS="-ltermcap $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6345,7 +6254,7 @@ tk_lib= for l in tcl tcl8.0jp tcl7.6jp tcl80jp tcl76jp tcl8.0 tcl7.6 tcl80 tcl76; do case "x$tcl_lib" in x) echo $ac_n "checking for Tcl_Init in -l$l""... $ac_c" 1>&6 -echo "configure:6349: checking for Tcl_Init in -l$l" >&5 +echo "configure:6258: checking for Tcl_Init in -l$l" >&5 ac_lib_var=`echo $l'_'Tcl_Init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6353,7 +6262,7 @@ ac_save_LIBS="$LIBS" LIBS="-l$l $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6277: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6388,7 +6297,7 @@ LIBS="$LIBS $tcl_lib" for l in tk tk8.0jp tk4.2jp tk80jp tk42jp tk8.0 tk4.2 tk80 tk42; do case "x$tk_lib" in x) echo $ac_n "checking for Tk_Init in -l$l""... $ac_c" 1>&6 -echo "configure:6392: checking for Tk_Init in -l$l" >&5 +echo "configure:6301: checking for Tk_Init in -l$l" >&5 ac_lib_var=`echo $l'_'Tk_Init | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -6396,7 +6305,7 @@ ac_save_LIBS="$LIBS" LIBS="-l$l $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6320: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -6773,7 +6682,7 @@ # Extract the first word of "gtk-config", so it can be a program name with args. set dummy gtk-config; ac_word=$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:6777: checking for $ac_word" >&5 +echo "configure:6686: checking for $ac_word" >&5 if eval "test \"`echo '$''{'ac_cv_path_GTK_CONFIG'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else @@ -6808,7 +6717,7 @@ min_gtk_version=1.1.3 echo $ac_n "checking for GTK - version >= $min_gtk_version""... $ac_c" 1>&6 -echo "configure:6812: checking for GTK - version >= $min_gtk_version" >&5 +echo "configure:6721: checking for GTK - version >= $min_gtk_version" >&5 no_gtk="" if test "$GTK_CONFIG" = "no" ; then no_gtk=yes @@ -6831,7 +6740,7 @@ echo $ac_n "cross compiling; assumed OK... $ac_c" else cat > conftest.$ac_ext < @@ -6897,7 +6806,7 @@ } EOF -if { (eval echo configure:6901: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null +if { (eval echo configure:6810: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext} && (./conftest; exit) 2>/dev/null then : else @@ -6931,7 +6840,7 @@ CFLAGS="$CFLAGS $GTK_CFLAGS" LIBS="$LIBS $GTK_LIBS" cat > conftest.$ac_ext < @@ -6941,7 +6850,7 @@ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ; return 0; } EOF -if { (eval echo configure:6945: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:6854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "*** The test program compiled, but did not run. This usually means" echo "*** that the run-time linker is not finding GTK or finding the wrong" @@ -7009,7 +6918,16 @@ ;; xdynamic) dynamic_targets="$dynamic_targets interface_g.\$(so)" - g_so_libs="$GTK_LIBS" + if test "$GCC" = yes; then + for i in $GTK_LIBS; do + case "x$i" in + x-rdynamic) ;; + *) g_so_libs="$g_so_libs $i" ;; + esac + done + else + g_so_libs="$GTK_LIBS" + fi for f in $GTK_CFLAGS; do case ".$f" in .-I?*|.-D?*) CPPFLAGS="$CPPFLAGS $f" ;; @@ -7059,7 +6977,7 @@ lib_w32gui_opt='-lgdi32 -lcomctl32 -lcomdlg32' lib_user32_opt='-luser32' LDFLAGS="-mwindows $LDFLAGS" - INTERFACE_SRCS="$INTERFACE_SRCS w32g_c.c w32g_ini.c w32g_i.c w32g_playlist.c w32g_utl.c w32g_panel.c w32g_canvas.c" + INTERFACE_SRCS="$INTERFACE_SRCS w32g_c.c w32g_ini.c w32g_i.c w32g_playlist.c w32g_utl.c w32g_pref.c w32g_subwin.c" ;; xdynamic) @@ -7082,17 +7000,17 @@ fi ac_safe=`echo "X11/xpm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/xpm.h""... $ac_c" 1>&6 -echo "configure:7086: checking for X11/xpm.h" >&5 +echo "configure:7004: checking for X11/xpm.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7096: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7014: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7115,7 +7033,7 @@ fi echo $ac_n "checking for XpmCreatePixmapFromData in -lXpm""... $ac_c" 1>&6 -echo "configure:7119: checking for XpmCreatePixmapFromData in -lXpm" >&5 +echo "configure:7037: checking for XpmCreatePixmapFromData in -lXpm" >&5 ac_lib_var=`echo Xpm'_'XpmCreatePixmapFromData | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7123,7 +7041,7 @@ ac_save_LIBS="$LIBS" LIBS="-lXpm $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7056: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7230,17 +7148,17 @@ do ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:7234: checking for $ac_hdr" >&5 +echo "configure:7152: checking for $ac_hdr" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7244: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7162: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7291,7 +7209,7 @@ LDFLAGS="$LDFLAGS $offix_lib_dir" LIBS="$LIBS $lib_xmu_opt $lib_xt_opt $lib_xprelibs_opt $lib_xext_opt -lX11" echo $ac_n "checking for DndInitialize in -lDnd""... $ac_c" 1>&6 -echo "configure:7295: checking for DndInitialize in -lDnd" >&5 +echo "configure:7213: checking for DndInitialize in -lDnd" >&5 ac_lib_var=`echo Dnd'_'DndInitialize | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7299,7 +7217,7 @@ ac_save_LIBS="$LIBS" LIBS="-lDnd $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7232: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7393,7 +7311,7 @@ EXTRADEFS="$EXTRADEFS -DWRDT_X" enable_sherry_wrd=yes echo $ac_n "checking for zlibVersion in -lz""... $ac_c" 1>&6 -echo "configure:7397: checking for zlibVersion in -lz" >&5 +echo "configure:7315: checking for zlibVersion in -lz" >&5 ac_lib_var=`echo z'_'zlibVersion | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7401,7 +7319,7 @@ ac_save_LIBS="$LIBS" LIBS="-lz $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7435,17 +7353,17 @@ ac_safe=`echo "png.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for png.h""... $ac_c" 1>&6 -echo "configure:7439: checking for png.h" >&5 +echo "configure:7357: checking for png.h" >&5 if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 else cat > conftest.$ac_ext < EOF ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:7449: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:7367: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -7468,7 +7386,7 @@ fi echo $ac_n "checking for png_init_io in -lpng""... $ac_c" 1>&6 -echo "configure:7472: checking for png_init_io in -lpng" >&5 +echo "configure:7390: checking for png_init_io in -lpng" >&5 ac_lib_var=`echo png'_'png_init_io | sed 'y%./+-%__p_%'` if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then echo $ac_n "(cached) $ac_c" 1>&6 @@ -7476,7 +7394,7 @@ ac_save_LIBS="$LIBS" LIBS="-lpng -lz $LIBS" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7409: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=yes" else @@ -7801,7 +7719,6 @@ s%@CC@%$CC%g s%@RANLIB@%$RANLIB%g s%@LN_S@%$LN_S%g -s%@EXEEXT@%$EXEEXT%g s%@CPP@%$CPP%g s%@X_CFLAGS@%$X_CFLAGS%g s%@X_PRE_LIBS@%$X_PRE_LIBS%g diff -ruN TiMidity++-2.4.1/configure.in TiMidity++-2.5.0/configure.in --- TiMidity++-2.4.1/configure.in Tue Aug 10 18:32:00 1999 +++ TiMidity++-2.5.0/configure.in Thu Aug 26 12:58:47 1999 @@ -53,7 +53,7 @@ AC_INIT(timidity/timidity.c) AC_CANONICAL_SYSTEM -AM_INIT_AUTOMAKE(TiMidity++, 2.4.1, no-define) +AM_INIT_AUTOMAKE(TiMidity++, 2.5.0, no-define) dnl To use CONTAINS() macro (See acinclude.m4) CONTAINS_INIT @@ -208,7 +208,7 @@ esac dnl For .exe -AC_EXEEXT +dnl AC_EXEEXT AC_CHECK_LIB(m,sqrt) AC_CHECK_LIB(socket,socket) @@ -522,7 +522,11 @@ ;; *-*-cygwin32*) EXTRADEFS="$EXTRADEFS -DAU_W32" - SYSEXTRAS="$SYSEXTRAS w32_a.c" + if test "x$enable_w32gui" = xyes; then + SYSEXTRAS="$SYSEXTRAS w32g_a.c" + else + SYSEXTRAS="$SYSEXTRAS w32_a.c" + fi EXTRALIBS="$EXTRALIBS -lwinmm" AC_MSG_RESULT(yes cygnus) ;; @@ -859,7 +863,17 @@ EXTRACT_CPPFLAGS(CPPFLAGS,CFLAGS,$GTK_CFLAGS) INTERFACE_SRCS="$INTERFACE_SRCS gtk_c.c gtk_i.c gtk_p.c" ], - [ g_so_libs="$GTK_LIBS" + [ if test "$GCC" = yes; then + dnl Do not include -rdynamic option in $g_so_libs. + for i in $GTK_LIBS; do + case "x$i" in + x-rdynamic) ;; + *) g_so_libs="$g_so_libs $i" ;; + esac + done + else + g_so_libs="$GTK_LIBS" + fi EXTRACT_CPPFLAGS(CPPFLAGS,CFLAGS,$GTK_CFLAGS) ]) @@ -871,7 +885,7 @@ [ lib_w32gui_opt='-lgdi32 -lcomctl32 -lcomdlg32' lib_user32_opt='-luser32' LDFLAGS="-mwindows $LDFLAGS" - INTERFACE_SRCS="$INTERFACE_SRCS w32g_c.c w32g_ini.c w32g_i.c w32g_playlist.c w32g_utl.c w32g_panel.c w32g_canvas.c" + INTERFACE_SRCS="$INTERFACE_SRCS w32g_c.c w32g_ini.c w32g_i.c w32g_playlist.c w32g_utl.c w32g_pref.c w32g_subwin.c" ]) diff -ruN TiMidity++-2.4.1/doc/C/Makefile.in TiMidity++-2.5.0/doc/C/Makefile.in --- TiMidity++-2.4.1/doc/C/Makefile.in Wed Aug 11 22:07:00 1999 +++ TiMidity++-2.5.0/doc/C/Makefile.in Thu Aug 26 13:01:10 1999 @@ -89,7 +89,6 @@ ESD_CFLAGS = @ESD_CFLAGS@ ESD_CONFIG = @ESD_CONFIG@ ESD_LIBS = @ESD_LIBS@ -EXEEXT = @EXEEXT@ EXTRALIBS = @EXTRALIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_CONFIG = @GTK_CONFIG@ diff -ruN TiMidity++-2.4.1/doc/Makefile.in TiMidity++-2.5.0/doc/Makefile.in --- TiMidity++-2.4.1/doc/Makefile.in Wed Aug 11 22:06:58 1999 +++ TiMidity++-2.5.0/doc/Makefile.in Thu Aug 26 13:01:06 1999 @@ -89,7 +89,6 @@ ESD_CFLAGS = @ESD_CFLAGS@ ESD_CONFIG = @ESD_CONFIG@ ESD_LIBS = @ESD_LIBS@ -EXEEXT = @EXEEXT@ EXTRALIBS = @EXTRALIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_CONFIG = @GTK_CONFIG@ diff -ruN TiMidity++-2.4.1/doc/ja_JP.ujis/Makefile.in TiMidity++-2.5.0/doc/ja_JP.ujis/Makefile.in --- TiMidity++-2.4.1/doc/ja_JP.ujis/Makefile.in Wed Aug 11 22:07:01 1999 +++ TiMidity++-2.5.0/doc/ja_JP.ujis/Makefile.in Thu Aug 26 13:01:13 1999 @@ -89,7 +89,6 @@ ESD_CFLAGS = @ESD_CFLAGS@ ESD_CONFIG = @ESD_CONFIG@ ESD_LIBS = @ESD_LIBS@ -EXEEXT = @EXEEXT@ EXTRALIBS = @EXTRALIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_CONFIG = @GTK_CONFIG@ diff -ruN TiMidity++-2.4.1/interface/Makefile.am TiMidity++-2.5.0/interface/Makefile.am --- TiMidity++-2.4.1/interface/Makefile.am Sat Jul 31 00:48:23 1999 +++ TiMidity++-2.5.0/interface/Makefile.am Thu Aug 26 12:58:07 1999 @@ -94,14 +94,17 @@ w32g.h \ w32g_c.c \ w32g_ini.c \ + w32g_rec.h \ w32g_res.h \ w32g_res.rc \ w32g_utl.c \ w32g_utl.h \ w32g_i.c \ w32g_playlist.c \ - w32g_panel.c \ - w32g_canvas.c \ + w32g_pref.c \ + w32g_pref.h \ + w32g_subwin.c \ + w32g_subwin.h \ w32g_btn.bmp \ w32g_icon.ico \ w32g_sleep.bmp \ @@ -205,7 +208,7 @@ test -d $(DESTDIR)$(TIMID_DIR) || mkdir -p $(DESTDIR)$(TIMID_DIR) for f in $(ELFILES) ''; do case ".$$f" in .);; *) $(INSTALL_DATA) $$f $(DESTDIR)$(TIMID_DIR);; esac; done -w32g_res.res: w32g_res.h w32g_res.rc \ +w32g_res.res: w32g_res.h w32g_rec.h w32g_res.rc \ w32g_btn.bmp w32g_icon.ico w32g_sleep.bmp w32g_subbtn.bmp windres -o $@ -O coff w32g_res.rc diff -ruN TiMidity++-2.4.1/interface/Makefile.in TiMidity++-2.5.0/interface/Makefile.in --- TiMidity++-2.4.1/interface/Makefile.in Wed Aug 11 22:06:44 1999 +++ TiMidity++-2.5.0/interface/Makefile.in Thu Aug 26 13:00:41 1999 @@ -88,7 +88,6 @@ ESD_CFLAGS = @ESD_CFLAGS@ ESD_CONFIG = @ESD_CONFIG@ ESD_LIBS = @ESD_LIBS@ -EXEEXT = @EXEEXT@ EXTRALIBS = @EXTRALIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_CONFIG = @GTK_CONFIG@ @@ -121,7 +120,7 @@ libinterface_a_SOURCES = dumb_c.c wrdt_dumb.c wrdt_tty.c -EXTRA_libinterface_a_SOURCES = ncurs_c.c slang_c.c motif.h motif_c.c motif_i.c motif_p.c tk_c.c emacs_c.c vt100.h vt100.c vt100_c.c xaw.h xaw_c.c xaw_i.c xaw_redef.c xskin.h xskin_c.c xskin_i.c xskin_loadBMP.c xskin_spectrum.c wrdt_x.c x_sherry.c x_sherry.h x_wrdwindow.c x_wrdwindow.h VTPrsTbl.c VTparse.h x_mag.c x_mag.h dynamic_c.c mac_c.c mac_c.h mac_mag.c mac_mag.h mac_trace.c mac_wrdwindow.c mac_wrdwindow.h wrdt_mac.c wrdt_wcon.c gtk_c.c gtk_h.h gtk_i.c gtk_p.c soundspec.c soundspec.h x_sherry.c x_sherry.h check.xbm arrow.xbm on.xbm off.xbm server_c.c server_defs.h w32g.h w32g_c.c w32g_ini.c w32g_res.h w32g_res.rc w32g_utl.c w32g_utl.h w32g_i.c w32g_playlist.c w32g_panel.c w32g_canvas.c w32g_btn.bmp w32g_icon.ico w32g_sleep.bmp w32g_subbtn.bmp +EXTRA_libinterface_a_SOURCES = ncurs_c.c slang_c.c motif.h motif_c.c motif_i.c motif_p.c tk_c.c emacs_c.c vt100.h vt100.c vt100_c.c xaw.h xaw_c.c xaw_i.c xaw_redef.c xskin.h xskin_c.c xskin_i.c xskin_loadBMP.c xskin_spectrum.c wrdt_x.c x_sherry.c x_sherry.h x_wrdwindow.c x_wrdwindow.h VTPrsTbl.c VTparse.h x_mag.c x_mag.h dynamic_c.c mac_c.c mac_c.h mac_mag.c mac_mag.h mac_trace.c mac_wrdwindow.c mac_wrdwindow.h wrdt_mac.c wrdt_wcon.c gtk_c.c gtk_h.h gtk_i.c gtk_p.c soundspec.c soundspec.h x_sherry.c x_sherry.h check.xbm arrow.xbm on.xbm off.xbm server_c.c server_defs.h w32g.h w32g_c.c w32g_ini.c w32g_rec.h w32g_res.h w32g_res.rc w32g_utl.c w32g_utl.h w32g_i.c w32g_playlist.c w32g_pref.c w32g_pref.h w32g_subwin.c w32g_subwin.h w32g_btn.bmp w32g_icon.ico w32g_sleep.bmp w32g_subbtn.bmp @ENABLE_WRD_TRUE@WRD_OBJS = wrdt_x.o x_wrdwindow.o VTPrsTbl.o x_mag.o x_sherry.o @@ -457,7 +456,7 @@ x_wrdwindow.o: x_wrdwindow.c ../config.h ../timidity/timidity.h \ ../utils/support.h ../timidity/common.h ../libarc/url.h \ ../utils/mblock.h x_mag.h x_wrdwindow.h VTparse.h \ - ../timidity/wrd.h ../timidity/controls.h + ../timidity/wrd.h ../timidity/controls.h ../timidity/aq.h xaw_c.o: xaw_c.c ../config.h ../timidity/timidity.h ../utils/support.h \ ../timidity/common.h ../libarc/url.h ../utils/mblock.h \ ../timidity/instrum.h ../timidity/playmidi.h \ @@ -592,7 +591,7 @@ test -d $(DESTDIR)$(TIMID_DIR) || mkdir -p $(DESTDIR)$(TIMID_DIR) for f in $(ELFILES) ''; do case ".$$f" in .);; *) $(INSTALL_DATA) $$f $(DESTDIR)$(TIMID_DIR);; esac; done -w32g_res.res: w32g_res.h w32g_res.rc \ +w32g_res.res: w32g_res.h w32g_rec.h w32g_res.rc \ w32g_btn.bmp w32g_icon.ico w32g_sleep.bmp w32g_subbtn.bmp windres -o $@ -O coff w32g_res.rc diff -ruN TiMidity++-2.4.1/interface/bitmaps/Makefile.in TiMidity++-2.5.0/interface/bitmaps/Makefile.in --- TiMidity++-2.4.1/interface/bitmaps/Makefile.in Wed Aug 11 22:06:49 1999 +++ TiMidity++-2.5.0/interface/bitmaps/Makefile.in Thu Aug 26 13:00:51 1999 @@ -89,7 +89,6 @@ ESD_CFLAGS = @ESD_CFLAGS@ ESD_CONFIG = @ESD_CONFIG@ ESD_LIBS = @ESD_LIBS@ -EXEEXT = @EXEEXT@ EXTRALIBS = @EXTRALIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_CONFIG = @GTK_CONFIG@ diff -ruN TiMidity++-2.4.1/interface/motif_bitmaps/Makefile.in TiMidity++-2.5.0/interface/motif_bitmaps/Makefile.in --- TiMidity++-2.4.1/interface/motif_bitmaps/Makefile.in Wed Aug 11 22:06:48 1999 +++ TiMidity++-2.5.0/interface/motif_bitmaps/Makefile.in Thu Aug 26 13:00:47 1999 @@ -89,7 +89,6 @@ ESD_CFLAGS = @ESD_CFLAGS@ ESD_CONFIG = @ESD_CONFIG@ ESD_LIBS = @ESD_LIBS@ -EXEEXT = @EXEEXT@ EXTRALIBS = @EXTRALIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_CONFIG = @GTK_CONFIG@ diff -ruN TiMidity++-2.4.1/interface/ncurs_c.c TiMidity++-2.5.0/interface/ncurs_c.c --- TiMidity++-2.4.1/interface/ncurs_c.c Wed Aug 11 16:44:18 1999 +++ TiMidity++-2.5.0/interface/ncurs_c.c Wed Aug 18 16:31:34 1999 @@ -115,6 +115,16 @@ #define MAX_U_PREFIX 256 +/* GS LCD */ +#define GS_LCD_MARK_ON -1 +#define GS_LCD_MARK_OFF -2 +#define GS_LCD_MARK_CLEAR -3 +#define GS_LCD_MARK_CHAR '$' +static double gslcd_last_display_time; +static int gslcd_displayed_flag = 0; +#define GS_LCD_CLEAR_TIME 10.0 +#define GS_LCD_WIDTH 40 + extern int set_extension_modes(char *flag); static struct @@ -141,10 +151,14 @@ static double indicator_last_update; static int indicator_mode = INDICATOR_DEFAULT; static int display_velocity_flag = 0; +static int display_channels = 16; static Bitset channel_program_flags[MAX_CHANNELS]; +static Bitset gs_lcd_bits[MAX_CHANNELS]; +static int is_display_lcd = 1; static int scr_modified_flag = 1; /* delay flush for trace mode */ + static void update_indicator(void); static void reset_indicator(void); static void indicator_chan_update(int ch); @@ -184,6 +198,7 @@ static void ctl_sustain(int channel, int val); static void ctl_pitch_bend(int channel, int val); static void ctl_lyric(int lyricid); +static void ctl_gslcd(int id); static void ctl_reset(void); /**********************************************/ @@ -478,8 +493,11 @@ for(i = 0; i < COLS; i++) waddch(dftwin, '-'); #endif - for(i = 0; i < 16; i++) + for(i = 0; i < MAX_CHANNELS; i++) + { init_bitset(channel_program_flags + i, 128); + init_bitset(gs_lcd_bits + i, 128); + } } N_ctl_refresh(); } @@ -494,7 +512,7 @@ { int i, c; - if(ch >= 16) + if(ch >= display_channels) return; N_ctl_clrtoeol(NOTE_LINE + ch); @@ -619,7 +637,7 @@ if(name != NULL) { char *p; - if((p = strrchr(fn, '/')) != NULL) + if((p = pathsep_strrchr(fn)) != NULL) p++; else p = fn; @@ -678,6 +696,12 @@ { int i; + display_channels = LINES - 8; + if(display_channels > MAX_CHANNELS) + display_channels = MAX_CHANNELS; + if(current_file_info != NULL && current_file_info->max_channel < 16) + display_channels = 16; + display_play_system(play_system_mode); switch(ctl_ncurs_mode) { @@ -819,7 +843,7 @@ #ifdef MIDI_TITLE - if((f = strrchr(mfp->file, PATH_SEP)) != NULL) + if((f = pathsep_strrchr(mfp->file)) != NULL) f++; else f = mfp->file; @@ -971,6 +995,16 @@ } } +static void redraw_all(void) +{ + N_ctl_scrinit(); + ctl_total_time(CTL_LAST_STATUS); + ctl_master_volume(CTL_LAST_STATUS); + display_key_helpmsg(); + ctl_file_name(NULL); + ctl_ncurs_mode_init(); +} + static void ctl_event(CtlEvent *e) { if(midi_trace.flush_flag) @@ -981,6 +1015,7 @@ ctl_file_name((char *)e->v1); break; case CTLE_LOADING_DONE: + redraw_all(); break; case CTLE_PLAY_START: ctl_total_time((int)e->v1); @@ -1030,6 +1065,10 @@ case CTLE_LYRIC: ctl_lyric((int)e->v1); break; + case CTLE_GSLCD: + if(is_display_lcd) + ctl_gslcd((int)e->v1); + break; case CTLE_REFRESH: ctl_refresh(); break; @@ -1155,17 +1194,16 @@ static void ctl_note(int status, int ch, int note, int vel) { - int xl, n, c; - unsigned int onoff, check, prev_check; + int n, c; + unsigned int onoff = 0, check, prev_check; Bitset *bitset; - if(ch >= 16) - return; - - if(ctl_ncurs_mode != NCURS_MODE_TRACE || selected_channel == ch) + if(ch >= display_channels || ctl_ncurs_mode != NCURS_MODE_TRACE || + selected_channel == ch) return; scr_modified_flag = 1; + if(display_velocity_flag) n = '0' + (10 * vel) / 128; else @@ -1173,8 +1211,10 @@ c = (COLS - 24) / 12 * 12; if(c <= 0) c = 1; - xl=note % c; - wmove(dftwin, NOTE_LINE + ch, xl + 3); + note = note % c; + wmove(dftwin, NOTE_LINE + ch, note + 3); + bitset = channel_program_flags + ch; + switch(status) { case VOICE_DIE: @@ -1182,7 +1222,10 @@ onoff = 0; break; case VOICE_FREE: - waddch(dftwin, '.'); + if(get_bitset1(gs_lcd_bits + ch, note)) + waddch(dftwin, GS_LCD_MARK_CHAR); + else + waddch(dftwin, '.'); onoff = 0; break; case VOICE_ON: @@ -1202,21 +1245,27 @@ waddch(dftwin, n); onoff = 0; break; + case GS_LCD_MARK_ON: + set_bitset1(gs_lcd_bits + ch, note, 1); + if(!get_bitset1(bitset, note)) + waddch(dftwin, GS_LCD_MARK_CHAR); + return; + case GS_LCD_MARK_OFF: + set_bitset1(gs_lcd_bits + ch, note, 0); + if(!get_bitset1(bitset, note)) + waddch(dftwin, '.'); + return; } - bitset = channel_program_flags + ch; prev_check = has_bitset(bitset); + set_bitset1(bitset, note, onoff); if(prev_check == onoff) { /* Not change program mark */ - onoff <<= (8 * sizeof(onoff) - 1); - set_bitset(bitset, &onoff, note, 1); return; } - onoff <<= (8 * sizeof(onoff) - 1); - set_bitset(bitset, &onoff, note, 1); - check = has_bitset(bitset); + check = has_bitset(bitset); if(prev_check ^ check) { wmove(dftwin, NOTE_LINE + ch, COLS - 21); @@ -1237,7 +1286,7 @@ { int pr; - if(ch >= 16) + if(ch >= display_channels) return; if(comm != NULL) @@ -1274,15 +1323,15 @@ static void ctl_volume(int ch, int vol) { - static int last_vols[16]; + static int last_vols[MAX_CHANNELS]; int i; - if(ch >= 16) + if(ch >= display_channels) return; if(vol == CTL_STATUS_INIT) { - for(i = 0; i < 16; i++) + for(i = 0; i < MAX_CHANNELS; i++) last_vols[i] = CTL_STATUS_INIT; return; } @@ -1301,15 +1350,15 @@ static void ctl_expression(int ch, int vol) { - static int last_vols[16]; + static int last_vols[MAX_CHANNELS]; int i; - if(ch >= 16) + if(ch >= display_channels) return; if(vol == CTL_STATUS_INIT) { - for(i = 0; i < 16; i++) + for(i = 0; i < MAX_CHANNELS; i++) last_vols[i] = CTL_STATUS_INIT; return; } @@ -1328,9 +1377,8 @@ static void ctl_panning(int ch, int val) { - if(ch >= 16) - return; - if(ctl_ncurs_mode != NCURS_MODE_TRACE || selected_channel == ch) + if(ch >= display_channels || ctl_ncurs_mode != NCURS_MODE_TRACE || + selected_channel == ch) return; wmove(dftwin, NOTE_LINE + ch, COLS - 8); if(val == NO_PANNING) @@ -1358,9 +1406,8 @@ static void ctl_sustain(int ch, int val) { - if(ch >= 16) - return; - if(ctl_ncurs_mode != NCURS_MODE_TRACE || selected_channel == ch) + if(ch >= display_channels || + ctl_ncurs_mode != NCURS_MODE_TRACE || selected_channel == ch) return; wmove(dftwin, NOTE_LINE+ch, COLS - 4); if(val) @@ -1372,15 +1419,15 @@ static void ctl_pitch_bend(int ch, int val) { - static int lastbends[16]; + static int lastbends[MAX_CHANNELS]; int i, restore; - if(ch >= 16) + if(ch >= display_channels) return; if(val == CTL_STATUS_INIT) { - for(i = 0; i < 16; i++) + for(i = 0; i < MAX_CHANNELS; i++) lastbends[i] = CTL_STATUS_INIT; return; } @@ -1465,6 +1512,85 @@ } } +static void ctl_lcd_mark(int status, int x, int y) +{ + int w; + + if(!ctl.trace_playing) + { + waddch(msgwin, status == GS_LCD_MARK_ON ? GS_LCD_MARK_CHAR : ' '); + return; + } + + w = (COLS - 24) / 12 * 12; + if(status == GS_LCD_MARK_CLEAR) + { + int x, y; + for(y = 0; y < 16; y++) + for(x = 0; x < 40; x++) + ctl_note(GS_LCD_MARK_OFF, y, x + (w - 40) / 2, 0); + return; + } + + if(w < GS_LCD_WIDTH) + { + if(x < w) + ctl_note(status, y, x, 0); + } + else + { + ctl_note(status, y, x + (w - GS_LCD_WIDTH) / 2, 0); + } +} + +static void ctl_gslcd(int id) +{ + char *lcd; + int i, j, k, data, mask; + char tmp[3]; + + if((lcd = event2string(id)) == NULL) + return; + if(lcd[0] != ME_GSLCD) + return; + gslcd_last_display_time = get_current_calender_time(); + gslcd_displayed_flag = 1; + lcd++; + for(i = 0; i < 16; i++) + { + for(j = 0; j < 4; j++) + { + tmp[0]= lcd[2 * (j * 16 + i)]; + tmp[1]= lcd[2 * (j * 16 + i) + 1]; + if(sscanf(tmp, "%02X", &data) != 1) + { + /* Invalid format */ + return; + } + mask = 0x10; + for(k = 0; k < 10; k += 2) + { + if(data & mask) + { + ctl_lcd_mark(GS_LCD_MARK_ON, j * 10 + k, i); + ctl_lcd_mark(GS_LCD_MARK_ON, j * 10 + k + 1, i); + } + else + { + ctl_lcd_mark(GS_LCD_MARK_OFF, j * 10 + k, i); + ctl_lcd_mark(GS_LCD_MARK_OFF, j * 10 + k + 1, i); + } + mask >>= 1; + } + } + if(!ctl.trace_playing) + { + waddch(msgwin, '\n'); + wrefresh(msgwin); + } + } +} + static void ctl_reset(void) { if(ctl.trace_playing) @@ -1611,9 +1737,9 @@ else selected_channel += diff; while(selected_channel < 0) - selected_channel += 17; - while(selected_channel >= 16) - selected_channel -= 17; + selected_channel += display_channels + 1; + while(selected_channel >= display_channels) + selected_channel -= display_channels + 1; if(selected_channel != -1) init_trace_window_chan(selected_channel); @@ -1744,7 +1870,7 @@ ctl_mode_L_histh = hist; i = strlen(ctl_mode_L_lastenter); - while(i > 0 && ctl_mode_L_lastenter[i - 1] != PATH_SEP) + while(i > 0 && !IS_PATH_SEP(ctl_mode_L_lastenter[i - 1])) i--; ctl_mode_L_lastenter[i] = '\0'; @@ -1774,7 +1900,12 @@ mfp = head; free(new_files[0]); free(new_files); - + if(mfp == NULL) + { + rc = RC_NONE; + beep(); + goto end_enter; + } insert_MFnode_entrys(mfp, nc_playfile); ctl_list_mode(NC_LIST_NEW); rc = RC_NEXT; @@ -1957,7 +2088,7 @@ mfp = file_list.MFnode_head; n = 0; } - if((name = strrchr(mfp->file, '/')) == NULL) + if((name = pathsep_strrchr(mfp->file)) == NULL) name = mfp->file; else name++; @@ -2332,11 +2463,15 @@ mini_buff_set(command_buffer, dftwin, LINES - 1, "MIDI File: "); if(*ctl_mode_L_lastenter == '\0' && current_MFnode != NULL) { + char *p; strncpy(ctl_mode_L_lastenter, current_MFnode->file, COMMAND_BUFFER_SIZE - 1); ctl_mode_L_lastenter[COMMAND_BUFFER_SIZE - 1] = '\0'; - i = strlen(ctl_mode_L_lastenter); - while(i > 0 && ctl_mode_L_lastenter[i - 1] != PATH_SEP) + if((p = strrchr(ctl_mode_L_lastenter, '#')) != NULL) + i = p - ctl_mode_L_lastenter; + else + i = strlen(ctl_mode_L_lastenter); + while(i > 0 && !IS_PATH_SEP(ctl_mode_L_lastenter[i - 1])) i--; ctl_mode_L_lastenter[i] = '\0'; } @@ -2361,7 +2496,7 @@ COMMAND_BUFFER_SIZE - 1); ctl_mode_L_lastenter[COMMAND_BUFFER_SIZE - 1] = '\0'; i = strlen(ctl_mode_L_lastenter); - while(i > 0 && ctl_mode_L_lastenter[i - 1] != PATH_SEP) + while(i > 0 && !IS_PATH_SEP(ctl_mode_L_lastenter[i - 1])) i--; ctl_mode_L_lastenter[i] = '\0'; } @@ -2386,12 +2521,7 @@ } continue; case 12: /* ^L */ - N_ctl_scrinit(); - ctl_total_time(CTL_LAST_STATUS); - ctl_master_volume(CTL_LAST_STATUS); - display_key_helpmsg(); - ctl_file_name(NULL); - ctl_ncurs_mode_init(); + redraw_all(); continue; default: beep(); @@ -2788,7 +2918,7 @@ #ifdef __W32__ play_modeflag = 1; - display_play_system(play_system_mode); + display_play_system(play_system_mode); #else if(midi_trace.flush_flag) { @@ -2796,6 +2926,16 @@ return; } + if(gslcd_displayed_flag) + { + t = get_current_calender_time(); + if(t - gslcd_last_display_time > GS_LCD_CLEAR_TIME) + { + ctl_lcd_mark(GS_LCD_MARK_CLEAR, 0, 0); + gslcd_displayed_flag = 0; + } + } + if(play_modeflag) display_play_system(play_system_mode); else @@ -3334,7 +3474,6 @@ return list; } - /* Completion as file name */ static int mini_buff_completion(MiniBuffer *b) { @@ -3357,7 +3496,7 @@ pr = text; for(;;) { - pr = strchr(pr, PATH_SEP); + pr = pathsep_strchr(pr); if(pr == NULL) break; pr++; @@ -3365,11 +3504,12 @@ if(*pr == '~') break; #endif /* TILD_SCHEME_ENABLE */ - if(*pr == PATH_SEP) + if(IS_PATH_SEP(*pr)) { do pr++; - while(*pr == PATH_SEP); + while(IS_PATH_SEP(*pr)) + ; pr--; break; } @@ -3396,7 +3536,7 @@ b->cflag = 0; /* split dir and file name */ - if((file = strrchr(text, PATH_SEP)) != NULL) + if((file = pathsep_strrchr(text)) != NULL) { file++; dirlen = file - text; diff -ruN TiMidity++-2.4.1/interface/pixmaps/Makefile.in TiMidity++-2.5.0/interface/pixmaps/Makefile.in --- TiMidity++-2.4.1/interface/pixmaps/Makefile.in Wed Aug 11 22:06:51 1999 +++ TiMidity++-2.5.0/interface/pixmaps/Makefile.in Thu Aug 26 13:00:54 1999 @@ -89,7 +89,6 @@ ESD_CFLAGS = @ESD_CFLAGS@ ESD_CONFIG = @ESD_CONFIG@ ESD_LIBS = @ESD_LIBS@ -EXEEXT = @EXEEXT@ EXTRALIBS = @EXTRALIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_CONFIG = @GTK_CONFIG@ diff -ruN TiMidity++-2.4.1/interface/w32g.h TiMidity++-2.5.0/interface/w32g.h --- TiMidity++-2.4.1/interface/w32g.h Tue Aug 10 05:48:45 1999 +++ TiMidity++-2.5.0/interface/w32g.h Wed Aug 25 15:16:50 1999 @@ -3,23 +3,114 @@ #include +#ifdef RC_NONE +#undef RC_NONE +#define RC_NONE 0 +#endif /* RC_NONE */ + +#define LANGUAGE_JAPANESE 0x0001 +#define LANGUAGE_ENGLISH 0x0002 +extern int PlayerLanguage; +extern int PlayerMode; + + #ifndef MAXPATH #define MAXPATH 256 #endif /* MAXPATH */ + +#if defined(_MSC_VER) +//typedef void (__cdecl *MSVC_BEGINTHREAD_START_ADDRESS)(void *); +typedef LPTHREAD_START_ROUTINE MSVC_BEGINTHREAD_START_ADDRESS; +#elif defined(_BORLANDC_) +// typedef _USERENTRY (*BCC_BEGINTHREAD_START_ADDRESS)(void *); +typedef LPTHREAD_START_ROUTINE BCC_BEGINTHREAD_START_ADDRESS; +#endif + +// beginthread for C RUNTIME LIBRARY + +// HANDLE crt_beginthread(LPTHREAD_START_ROUTINE start_address, DWORD stack_size, LPVOID arglist); +#if defined(_MSC_VER) +#define crt_beginthread(start_address,stack_size,arglist) \ +(HANDLE)_beginthread((MSVC_BEGINTHREAD_START_ADDRESS)start_address,(unsigned)stack_size,(void *)arglist) +#elif defined(_BORLANDC_) +#define crt_beginthread(start_address,stack_size,arglist) \ +(HANDLE)_beginthread((BCC_BEGINTHREAD_START_ADDRESS)start_address,(unsigned)stack_size,(void *)arglist) +#else +#define crt_beginthread(start_address,stack_size,arglist) \ +(HANDLE)CreateThread(NULL,(DWORD)stack_size,(LPTHREAD_START_ROUTINE)start_address,(LPVOID)arglist,0,&dwTmp) +#endif + +// (HANDLE)crt_beginthreadex(LPSECURITY_ATTRIBUTES security, DWORD stack_size, LPTHREAD_START_ROUTINE start_address, LPVOID arglist, DWORD initflag, LPDWORD thrdaddr ); +#if defined(_MSC_VER) +#define crt_beginthreadex(security,stack_size,start_address,arglist,initflag,thrdaddr ) \ +(HANDLE)_beginthreadex((void *)security,(unsigned)stack_size,(MSVC_BEGINTHREAD_START_ADDRESS)start_address,(void *)arglist,(unsigned)initflag,(unsigned *)thrdaddr) +#elif defined(_BORLANDC_) +#define crt_beginthreadex(security,stack_size,start_address,arglist,initflag,thrdaddr ) \ +(HANDLE)_beginthreadNT((BCC_BEGINTHREAD_START_ADDRESS)start_address,(unsigned)stack_size,(void *)arglist,(void *)security_attrib,(unsigned long)create_flags,(unsigned long *)thread_id) +#else +#define crt_beginthreadex(security,stack_size,start_address,arglist,initflag,thrdaddr ) \ +(HANDLE)CreateThread((LPSECURITY_ATTRIBUTES)security,(DWORD)stack_size,(LPTHREAD_START_ROUTINE)start_address,(LPVOID)arglist,(DWORD)initflag,(LPDWORD)thrdaddr) +#endif + +#if defined(_MSC_VER) +#define crt_endthread() _endthread() +#elif defined(_BORLANDC_) +#define crt_endthread() _endthread() +#else +#define crt_endthread() ExitThread(0); +#endif + +#define RANGE(x,min,max) (((x)<(min))?((x)=(min)):(((x)>(max))?((x)=(max)):(x))) + #define RC_EXT_BASE 1000 enum { RC_EXT_DROP = RC_EXT_BASE, RC_EXT_LOAD_FILE, + RC_EXT_LOAD_PLAYLIST, + RC_EXT_SAVE_PLAYLIST, RC_EXT_MODE_CHANGE, RC_EXT_APPLY_SETTING, RC_EXT_DELETE_PLAYLIST, RC_EXT_UPDATE_PLAYLIST, + RC_EXT_UNIQ_PLAYLIST, + RC_EXT_REFINE_PLAYLIST, + RC_EXT_JUMP_FILE, + RC_EXT_ROTATE_PLAYLIST, + RC_EXT_CLEAR_PLAYLIST, + RC_EXT_OPEN_DOC, + RC_EXT_RESTART_GUI }; #define W32G_TIMIDITY_CFG "C:\\WINDOWS\\TIMIDITY.CFG" #define MAX_W32G_MIDI_CHANNELS 32 + +// Toolbar Macros +#define IDM_STOP 2501 +#define IDM_PAUSE 2502 +#define IDM_PREV 2503 +#define IDM_FOREWARD 2504 +#define IDM_PLAY 2505 +#define IDM_BACKWARD 2506 +#define IDM_NEXT 2507 + +#define IDM_CONSOLE 2511 +#define IDM_LIST 2512 +#define IDM_TRACER 2513 +#define IDM_DOC 2514 +#define IDM_WRD 2515 +#define IDM_SOUNDSPEC 2516 + + +#define FLAG_NOTE_OFF 1 +#define FLAG_NOTE_ON 2 + +#define FLAG_BANK 0x0001 +#define FLAG_PROG 0x0002 +#define FLAG_PAN 0x0004 +#define FLAG_SUST 0x0008 + #define FLAG_NOTE_OFF 1 #define FLAG_NOTE_ON 2 @@ -28,7 +119,60 @@ #define FLAG_PAN 0x0004 #define FLAG_SUST 0x0008 +typedef struct { + int reset_panel; + int wait_reset; + int multi_part; + + char v_flags[MAX_W32G_MIDI_CHANNELS]; + int16 cnote[MAX_W32G_MIDI_CHANNELS]; + int16 cvel[MAX_W32G_MIDI_CHANNELS]; + int16 ctotal[MAX_W32G_MIDI_CHANNELS]; + char c_flags[MAX_W32G_MIDI_CHANNELS]; + Channel channel[MAX_W32G_MIDI_CHANNELS]; + + int32 total_time; + int total_time_h; + int total_time_m; + int total_time_s; + int total_time_ss; + int32 cur_time; + int cur_time_h; + int cur_time_m; + int cur_time_s; + int cur_time_ss; + int cur_voices; + int voices; + int upper_voices; + char filename[MAXPATH + 64]; + char titlename[MAXPATH + 64]; + int filename_setflag; + int titlename_setflag; + int32 master_volume; + int32 master_volume_max; + int invalid_flag; + + int32 xnote[MAX_W32G_MIDI_CHANNELS][4]; + int aq_ratio; + + int changed; + char dummy[1024]; +} PanelInfo; +extern PanelInfo *Panel; + +#define PANELRESET_TIME 0x0001 +#define PANELRESET_CHANNEL 0x0002 +#define PANELRESET_MIDIINFO 0x0004 +#define PANELRESET_MISC 0x0008 +#define PANELRESET_EFFECT 0x0010 + + +#define CANVAS_MODE_SLEEP 0x0001 +#define CANVAS_MODE_MAP 0x0002 +#define CANVAS_MODE_KEYBOARD 0x0003 + +#if 0 #define TMCCC_BLACK RGB(0x00,0x00,0x00) #define TMCCC_WHITE RGB(0xff,0xff,0xff) #define TMCCC_RED RGB(0xff,0x00,0x00) @@ -70,9 +214,7 @@ // TMCM_32CHANNEL // TMCM_FREQUENCY }; - - -#include "w32g_utl.h" +#endif /* w32g_i.c */ @@ -88,26 +230,36 @@ extern void SettingWndApply(void); extern int w32g_lock_open_file; extern void w32g_i_init(); +extern void CanvasChange(int mode); extern HINSTANCE hInst; +extern void w32g_show_console(); +extern void MPanelStartLoad(char *filename); /* w32g_utl.c */ /* w32g_playlist.c */ -void w32g_add_playlist(int nfiles, char **files, int expand_flag); -char **w32g_get_playlist(int *nfiles); -extern int w32g_next_playlist(void); -extern int w32g_prev_playlist(void); -extern void w32g_first_playlist(void); +extern int w32g_add_playlist(int nfiles, char **files, int expand_flag, + int autouniq, int autorefine); +extern char *w32g_get_playlist(int idx); +extern int w32g_next_playlist(int skip_invalid_file); +extern int w32g_prev_playlist(int skip_invalid_file); +extern void w32g_first_playlist(int skip_invalid_file); extern int w32g_isempty_playlist(void); extern char *w32g_curr_playlist(void); extern void w32g_update_playlist(void); extern void w32g_get_playlist_index(int *selected, int *nfiles, int *cursel); -extern int w32g_goto_playlist(int num); -extern void w32g_delete_playlist(int pos); -extern int w32g_valid_playlist(void); +extern int w32g_goto_playlist(int num, int skip_invalid_file); +extern int w32g_delete_playlist(int pos); +extern int w32g_nvalid_playlist(void); +extern int w32g_ismidi_playlist(int n); extern void w32g_setcur_playlist(void); +extern int w32g_refine_playlist(int *is_selected_removed); +extern int w32g_uniq_playlist(int *is_selected_removed); +extern void w32g_clear_playlist(void); +extern void w32g_rotate_playlist(int dest); +#if 0 /* w32g_panel.c */ extern void w32g_init_panel(HWND hwnd); extern void TmPanelStartToLoad(char *filename); @@ -127,13 +279,16 @@ extern int TmCanvasChange(void); extern void TmCanvasUpdateInterval(); extern int TmCanvasMode; +#endif /* w32g_c.c */ -extern int w32g_play_active; +extern volatile int w32g_play_active; extern int w32g_current_volume[/* MAX_CHANNELS */]; extern int w32g_current_expression[/* MAX_CHANNELS */]; +extern volatile int w32g_restart_gui_flag; +void PrefSettingApplyReally(void); @@ -172,5 +327,20 @@ extern char *DocFileExt; extern int w32g_has_ini_file; + + +// HWND +extern HWND hStartWnd; +extern HWND hMainWnd; +extern HWND hDebugWnd; +extern HWND hConsoleWnd; +extern HWND hTracerWnd; +extern HWND hDocWnd; +extern HWND hListWnd; +extern HWND hWrdWnd; +extern HWND hSoundSpecWnd; +extern HWND hDebugEditWnd; +extern HWND hDocEditWnd; + #endif diff -ruN TiMidity++-2.4.1/interface/w32g_c.c TiMidity++-2.5.0/interface/w32g_c.c --- TiMidity++-2.4.1/interface/w32g_c.c Wed Aug 11 21:56:07 1999 +++ TiMidity++-2.5.0/interface/w32g_c.c Wed Aug 25 15:31:28 1999 @@ -42,17 +42,22 @@ #include "miditrace.h" #include "strtab.h" #include "aq.h" - +#include "timer.h" #include "w32g.h" +#include "w32g_subwin.h" + #include -int w32g_play_active; + +volatile int w32g_play_active; +volatile int w32g_restart_gui_flag = 0; int w32g_current_volume[MAX_CHANNELS]; int w32g_current_expression[MAX_CHANNELS]; static int mark_apply_setting = 0; - - +PanelInfo *Panel = NULL; +static void CanvasUpdateInterval(void); +static void ctl_panel_refresh(void); //****************************************************************************/ // Control funcitons @@ -69,8 +74,8 @@ ControlMode ctl= { "Win32 GUI interface", 'w', - 1,0,0, - CTLF_AUTOSTART | CTLF_LIST_LOOP, + 1,1,0, + CTLF_AUTOSTART | CTLF_LIST_LOOP | CTLF_DRAG_START, ctl_open, ctl_close, ctl_pass_playing_list, @@ -81,8 +86,16 @@ static int ctl_open(int using_stdin, int using_stdout) { + if(ctl.opened) + return 0; ctl.opened = 1; - set_trace_loop_hook(TmCanvasUpdateInterval); + set_trace_loop_hook(CanvasUpdateInterval); + + /* Initialize Panel */ + Panel = (PanelInfo *)safe_malloc(sizeof(PanelInfo)); + memset((void *)Panel,0,sizeof(PanelInfo)); + Panel->changed = 1; + return w32g_open(); } @@ -92,9 +105,66 @@ { w32g_close(); ctl.opened = 0; + free(Panel); + } +} + +static void PanelReset(void) +{ + int i, j; + + Panel->reset_panel = 0; + Panel->multi_part = 0; + Panel->wait_reset = 0; + Panel->cur_time = 0; + Panel->cur_time_h = 0; + Panel->cur_time_m = 0; + Panel->cur_time_s = 0; + Panel->cur_time_ss = 0; + for(i = 0; i < MAX_W32G_MIDI_CHANNELS; i++) + { + Panel->v_flags[i] = 0; + Panel->cnote[i] = 0; + Panel->cvel[i] = 0; + Panel->ctotal[i] = 0; + Panel->c_flags[i] = 0; + for(j = 0; j < 4; j++) + Panel->xnote[i][j] = 0; + Panel->channel[i].panning = 64; + Panel->channel[i].sustain = 0; + Panel->channel[i].expression = 0; + Panel->channel[i].volume = 0; + Panel->channel[i].pitchbend = 0x2000; } + Panel->titlename[0] = '\0'; + Panel->filename[0] = '\0'; + Panel->titlename_setflag = 0; + Panel->filename_setflag = 0; + Panel->cur_voices = 0; + Panel->voices = voices; + Panel->upper_voices = 0; + // Panel->master_volume = 0; + Panel->aq_ratio = 0; + Panel->changed = 1; } +static void CanvasUpdateInterval(void) +{ + static double lasttime; + double t; + + if(CanvasGetMode() == CANVAS_MODE_MAP) + { + t = get_current_calender_time(); + if(t - lasttime > 0.05) + { + CanvasReadPanelInfo(0); + CanvasUpdate(0); + CanvasPaint(); + lasttime = t; + } + } +} static int ctl_drop_file(HDROP hDrop) { @@ -102,6 +172,9 @@ int i, n, len; char buffer[BUFSIZ]; char **files; + int prevnfiles; + + w32g_get_playlist_index(NULL, &prevnfiles, NULL); init_string_table(&st); n = DragQueryFile(hDrop,0xffffffffL, NULL, 0); @@ -115,16 +188,25 @@ } DragFinish(hDrop); - files = make_string_array(&st); - if(files != NULL) + if((files = make_string_array(&st)) == NULL) + n = 0; + else { - w32g_add_playlist(n, files, 1); + n = w32g_add_playlist(n, files, 1, + ctl.flags & CTLF_AUTOUNIQ, + ctl.flags & CTLF_AUTOREFINE); free(files[0]); free(files); } - w32g_update_playlist(); if(n > 0) - TmPanelUpdateList(); + { + ctl_panel_refresh(); + if(ctl.flags & CTLF_DRAG_START) + { + w32g_goto_playlist(prevnfiles, !(ctl.flags & CTLF_NOT_CONTINUE)); + return RC_LOAD_FILE; + } + } return RC_NONE; } @@ -136,14 +218,6 @@ char buffer[BUFSIZ]; char *basedir; - for(n = 0; n < 100; n++) { - if(fileptr[n] == '\0') - printf(""); - else - printf("%c", fileptr[n]); - } - printf("\n");fflush(stdout); - init_string_table(&st); n = 0; basedir = fileptr; @@ -166,15 +240,81 @@ } files = make_string_array(&st); - if(files != NULL) + n = w32g_add_playlist(n, files, 1, + ctl.flags & CTLF_AUTOUNIQ, + ctl.flags & CTLF_AUTOREFINE); + free(files[0]); + free(files); + + if(n > 0) + ctl_panel_refresh(); + w32g_lock_open_file = 0; + return RC_NONE; +} + +static int ctl_load_playlist(char *fileptr) +{ + StringTable st; + int n; + char **files; + char buffer[BUFSIZ]; + char *basedir; + + init_string_table(&st); + n = 0; + basedir = fileptr; + fileptr += strlen(fileptr) + 1; + while(*fileptr) { - w32g_add_playlist(n, files, 1); - free(files[0]); - free(files); + snprintf(buffer, sizeof(buffer), "@%s\\%s", basedir, fileptr); + put_string_table(&st, buffer, strlen(buffer)); + n++; + fileptr += strlen(fileptr) + 1; + } + + if(n == 0) + { + buffer[0] = '@'; + strncpy(buffer + 1, basedir, sizeof(buffer) - 1); + put_string_table(&st, buffer, strlen(buffer)); + n++; } - w32g_update_playlist(); + + files = make_string_array(&st); + n = w32g_add_playlist(n, files, 1, + ctl.flags & CTLF_AUTOUNIQ, + ctl.flags & CTLF_AUTOREFINE); + free(files[0]); + free(files); + if(n > 0) - TmPanelUpdateList(); + ctl_panel_refresh(); + w32g_lock_open_file = 0; + return RC_NONE; +} + +static int ctl_save_playlist(char *fileptr) +{ + FILE *fp; + char *filename; + int i, nfiles; + + if((fp = fopen(fileptr, "w")) == NULL) + { + w32g_lock_open_file = 0; + cmsg(CMSG_FATAL, VERB_NORMAL, "%s: %s", fileptr, strerror(errno)); + w32g_lock_open_file = 0; + return RC_NONE; + } + + w32g_get_playlist_index(NULL, &nfiles, NULL); + for(i = 0; i < nfiles; i++) + { + fputs(w32g_get_playlist(i), fp); + fputs("\n", fp); + } + + fclose(fp); w32g_lock_open_file = 0; return RC_NONE; } @@ -187,37 +327,90 @@ pos = cur + offset; if(pos < 0 || pos >= nfiles) return RC_NONE; - w32g_delete_playlist(pos); - if(w32g_play_active && selected == pos) - return RC_LOAD_FILE; + if(w32g_delete_playlist(pos)) + { + ctl_panel_refresh(); + if(w32g_play_active && selected == pos) + return RC_LOAD_FILE; + } + return RC_NONE; +} + +static int ctl_uniq_playlist(void) +{ + int n, stop; + n = w32g_uniq_playlist(&stop); + if(n > 0) + { + ctl_panel_refresh(); + if(stop) + return RC_STOP; + } + return RC_NONE; +} + +static int ctl_refine_playlist(void) +{ + int n, stop; + n = w32g_refine_playlist(&stop); + if(n > 0) + { + ctl_panel_refresh(); + if(stop) + return RC_STOP; + } return RC_NONE; } static int w32g_ext_control(int rc, int32 value) { + int i; + switch(rc) { case RC_EXT_DROP: return ctl_drop_file((HDROP)value); case RC_EXT_LOAD_FILE: return ctl_load_file((char *)value); + case RC_EXT_LOAD_PLAYLIST: + return ctl_load_playlist((char *)value); + case RC_EXT_SAVE_PLAYLIST: + return ctl_save_playlist((char *)value); case RC_EXT_MODE_CHANGE: - return TmCanvasChange(); + CanvasChange(value); + break; case RC_EXT_APPLY_SETTING: if(w32g_play_active) { mark_apply_setting = 1; return RC_STOP; } - SettingWndApply(); + PrefSettingApplyReally(); mark_apply_setting = 0; - return RC_NONE; + break; case RC_EXT_DELETE_PLAYLIST: - rc = ctl_delete_playlist(value); - TmPanelUpdateList(); - return rc; + return ctl_delete_playlist(value); case RC_EXT_UPDATE_PLAYLIST: w32g_update_playlist(); - return rc; + break; + case RC_EXT_UNIQ_PLAYLIST: + return ctl_uniq_playlist(); + case RC_EXT_REFINE_PLAYLIST: + return ctl_refine_playlist(); + case RC_EXT_JUMP_FILE: + if(w32g_goto_playlist(value, !(ctl.flags & CTLF_NOT_CONTINUE))) + return RC_LOAD_FILE; + case RC_EXT_ROTATE_PLAYLIST: + w32g_rotate_playlist(value); + ctl_panel_refresh(); + break; + case RC_EXT_CLEAR_PLAYLIST: + w32g_clear_playlist(); + ctl_panel_refresh(); + return RC_STOP; + case RC_EXT_OPEN_DOC: + w32g_setup_doc(value); + w32g_open_doc(0); + break; } return RC_NONE; } @@ -250,6 +443,20 @@ return 0; } +static void ctl_panel_refresh(void) +{ + MPanelReadPanelInfo(0); + MPanelUpdate(); + MPanelPaint(); +} + +static void ctl_master_volume(int mv) +{ + Panel->master_volume = mv; + Panel->changed = 1; + ctl_panel_refresh(); +} + static void ctl_pass_playing_list(int number_of_files, char *list_of_files[]) { int rc; @@ -257,12 +464,14 @@ extern void timidity_init_aq_buff(void); int errcnt; - w32g_add_playlist(number_of_files, list_of_files, 0); + w32g_add_playlist(number_of_files, list_of_files, 0, + ctl.flags & CTLF_AUTOUNIQ, + ctl.flags & CTLF_AUTOREFINE); w32g_play_active = 0; errcnt = 0; if(play_mode->fd != -1 && - w32g_valid_playlist() && (ctl.flags & CTLF_AUTOSTART)) + w32g_nvalid_playlist() && (ctl.flags & CTLF_AUTOSTART)) rc = RC_LOAD_FILE; else rc = RC_NONE; @@ -275,7 +484,6 @@ { aq_flush(1); play_mode->close_output(); - TmCanvasReset(); } rc = w32g_get_rc(&value, 1); } @@ -288,8 +496,10 @@ break; case RC_LOAD_FILE: /* Play playlist.selected */ - if(w32g_valid_playlist()) + if(w32g_nvalid_playlist()) { + int selected; + w32g_get_playlist_index(&selected, NULL, NULL); w32g_play_active = 1; if(play_mode->fd == -1) { @@ -307,18 +517,27 @@ timidity_init_aq_buff(); } w32g_setcur_playlist(); - rc = play_midi_file(w32g_curr_playlist()); + if(play_mode->id_character == 'l') + w32g_show_console(); + w32g_setup_doc(selected); + if(!DocWndIndependent) + w32g_open_doc(1); + + rc = play_midi_file(w32g_get_playlist(selected)); + + if(ctl.flags & CTLF_NOT_CONTINUE) + w32g_update_playlist(); /* Update mark of error */ if(rc == RC_ERROR) + { + int nfiles; errcnt++; + w32g_get_playlist_index(NULL, &nfiles, NULL); + if(errcnt >= nfiles) + w32g_msg_box("No MIDI file to play", + "TiMidity Warning", MB_OK); + } else errcnt = 0; - if(errcnt == 10) - { - w32g_msg_box("Too many MIDI files are error", - "TiMidity Warning", MB_OK); - errcnt = 0; - break; - } w32g_play_active = 0; goto redo; } @@ -326,13 +545,21 @@ case RC_ERROR: case RC_TUNE_END: - if(play_mode->id_character != 'd') + if(play_mode->id_character != 'd' || + (ctl.flags & CTLF_NOT_CONTINUE)) break; /* FALLTHROUGH */ case RC_NEXT: - if(!w32g_valid_playlist()) + if(!w32g_nvalid_playlist()) + { + if(ctl.flags & CTLF_AUTOEXIT) { + if(play_mode->fd != -1) + aq_flush(0); + return; + } break; - if(w32g_next_playlist()) + } + if(w32g_next_playlist(!(ctl.flags & CTLF_NOT_CONTINUE))) { rc = RC_LOAD_FILE; goto redo; @@ -340,11 +567,14 @@ else { /* end of list */ - if((ctl.flags & CTLF_AUTOEXIT) && w32g_valid_playlist()) + if(ctl.flags & CTLF_AUTOEXIT){ + if(play_mode->fd != -1) + aq_flush(0); return; - if((ctl.flags & CTLF_LIST_LOOP) && w32g_valid_playlist()) + } + if((ctl.flags & CTLF_LIST_LOOP) && w32g_nvalid_playlist()) { - w32g_first_playlist(); + w32g_first_playlist(!(ctl.flags & CTLF_NOT_CONTINUE)); rc = RC_LOAD_FILE; goto redo; } @@ -352,7 +582,7 @@ break; case RC_REALLY_PREVIOUS: - if(w32g_prev_playlist()) + if(w32g_prev_playlist(!(ctl.flags & CTLF_NOT_CONTINUE))) { rc = RC_LOAD_FILE; goto redo; @@ -360,54 +590,276 @@ break; case RC_QUIT: + if(play_mode->fd != -1) + aq_flush(1); return; case RC_CHANGE_VOLUME: amplification += value; - TmPanelSetMasterVol(amplification); - TmPanelRefresh(); + ctl_master_volume(amplification); break; case RC_TOGGLE_PAUSE: play_pause_flag = !play_pause_flag; + break; default: if(rc >= RC_EXT_BASE) { - int load; - if((rc == RC_EXT_DROP || rc == RC_EXT_LOAD_FILE) && - w32g_isempty_playlist() && - (ctl.flags & CTLF_AUTOSTART)) - load = 1; - else - load = 0; - w32g_ext_control(rc, value); - if(load) - { - rc = RC_LOAD_FILE; + rc = w32g_ext_control(rc, value); + if(rc != RC_NONE) goto redo; - } } break; } if(mark_apply_setting) - SettingWndApply(); + PrefSettingApplyReally(); rc = RC_NONE; } } + +static void ctl_channel_note(int ch, int note, int vel) +{ + if (vel == 0) { + if (note == Panel->cnote[ch]) + Panel->v_flags[ch] = FLAG_NOTE_OFF; + Panel->cvel[ch] = 0; + } else if (vel > Panel->cvel[ch]) { + Panel->cvel[ch] = vel; + Panel->cnote[ch] = note; + Panel->ctotal[ch] = ( vel * Panel->channel[ch].volume * + Panel->channel[ch].expression ) >> 14; +// Panel->channel[ch].expression / (127*127); + Panel->v_flags[ch] = FLAG_NOTE_ON; + } + Panel->changed = 1; +} + +static void ctl_note(int status, int ch, int note, int vel) +{ + int32 i, n; + + if(!ctl.trace_playing) + return; + if(ch < 0 || ch >= MAX_W32G_MIDI_CHANNELS) + return; + + if(status != VOICE_ON) + vel = 0; + + switch(status) { + case VOICE_SUSTAINED: + case VOICE_DIE: + case VOICE_FREE: + case VOICE_OFF: + n = note; + i = 0; + if(n<0) n = 0; + if(n>127) n = 127; + while(n >= 32){ + n -= 32; + i++; + } + Panel->xnote[ch][i] &= ~(((int32)1) << n); + break; + case VOICE_ON: + n = note; + i = 0; + if(n<0) n = 0; + if(n>127) n = 127; + while(n >= 32){ + n -= 32; + i++; + } + Panel->xnote[ch][i] |= ((int32)1) << n; + break; + } + ctl_channel_note(ch, note, vel); +} + +static void ctl_volume(int ch, int val) +{ + if(ch >= MAX_W32G_MIDI_CHANNELS) + return; + if(!ctl.trace_playing) + return; + + Panel->channel[ch].volume = val; + ctl_channel_note(ch, Panel->cnote[ch], Panel->cvel[ch]); +} + +static void ctl_expression(int ch, int val) +{ + if(ch >= MAX_W32G_MIDI_CHANNELS) + return; + if(!ctl.trace_playing) + return; + + Panel->channel[ch].expression = val; + ctl_channel_note(ch, Panel->cnote[ch], Panel->cvel[ch]); +} + +static void ctl_current_time(int secs, int nvoices) +{ + int32 centisecs = secs * 100; + + Panel->cur_time = centisecs; + Panel->cur_time_h = centisecs/100/60/60; + centisecs %= 100*60*60; + Panel->cur_time_m = centisecs/100/60; + centisecs %= 100*60; + Panel->cur_time_s = centisecs/100; + centisecs %= 100; + Panel->cur_time_ss = centisecs; + Panel->cur_voices = nvoices; + Panel->changed = 1; +} + +static void display_aq_ratio(void) +{ + static int last_rate = -1; + int rate, devsiz; + + if((devsiz = aq_get_dev_queuesize()) == 0) + return; + + rate = (int)(((double)(aq_filled() + aq_soft_filled()) / devsiz) + * 100 + 0.5); + if(rate > 999) + rate = 1000; + Panel->aq_ratio = rate; + if(last_rate != rate) { + last_rate = Panel->aq_ratio = rate; + Panel->changed = 1; + } +} + +static void ctl_total_time(int tt) +{ + int32 centisecs = tt/(play_mode->rate/100); + + Panel->total_time = centisecs; + Panel->total_time_h = centisecs/100/60/60; + centisecs %= 100*60*60; + Panel->total_time_m = centisecs/100/60; + centisecs %= 100*60; + Panel->total_time_s = centisecs/100; + centisecs %= 100; + Panel->total_time_ss = centisecs; + Panel->changed = 1; + ctl_current_time(0, 0); +} + +static void ctl_program(int ch, int val) +{ + if(ch < 0 || ch >= MAX_W32G_MIDI_CHANNELS) + return; + if(!ctl.trace_playing) + return; + if(channel[ch].special_sample) + val = channel[ch].special_sample; + else + val += progbase; + + Panel->channel[ch].program = val; + Panel->c_flags[ch] |= FLAG_PROG; + Panel->changed = 1; +} + +static void ctl_panning(int ch, int val) +{ + if(ch >= MAX_W32G_MIDI_CHANNELS) + return; + if(!ctl.trace_playing) + return; + Panel->channel[ch].panning = val; + Panel->c_flags[ch] |= FLAG_PAN; + Panel->changed = 1; +} + +static void ctl_sustain(int ch, int val) +{ + if(ch >= MAX_W32G_MIDI_CHANNELS) + return; + if(!ctl.trace_playing) + return; + Panel->channel[ch].sustain = val; + Panel->c_flags[ch] |= FLAG_SUST; + Panel->changed = 1; +} + +static void ctl_pitch_bend(int ch, int val) +{ + if(ch >= MAX_W32G_MIDI_CHANNELS) + return; + if(!ctl.trace_playing) + return; + + Panel->channel[ch].pitchbend = val; +// Panel->c_flags[ch] |= FLAG_BENDT; + Panel->changed = 1; +} + +static void ctl_reset(void) +{ + int i; + + if(!ctl.trace_playing) + return; + + PanelReset(); + CanvasReadPanelInfo(0); + CanvasUpdate(0); + CanvasPaint(); + + for(i = 0; i < MAX_W32G_MIDI_CHANNELS; i++) + { + if(ISDRUMCHANNEL(i)) + ctl_program(i, channel[i].bank); + else + ctl_program(i, channel[i].program); + ctl_volume(i, channel[i].volume); + ctl_expression(i, channel[i].expression); + ctl_panning(i, channel[i].panning); + ctl_sustain(i, channel[i].sustain); + if(channel[i].pitchbend == 0x2000 && + channel[i].modulation_wheel > 0) + ctl_pitch_bend(i, -1); + else + ctl_pitch_bend(i, channel[i].pitchbend); + ctl_channel_note(i, Panel->cnote[i], 0); + } + Panel->changed = 1; +} + +static void ctl_maxvoices(int v) +{ + Panel->voices = v; + Panel->changed = 1; +} + static void ctl_event(CtlEvent *e) { switch(e->type) { case CTLE_NOW_LOADING: - TmPanelStartToLoad((char *)e->v1); + PanelReset(); + CanvasReset(); + CanvasClear(); + CanvasReadPanelInfo(1); + CanvasUpdate(1); + CanvasPaintAll(); + MPanelReset(); + MPanelReadPanelInfo(1); + MPanelUpdateAll(); + MPanelPaintAll(); + MPanelStartLoad((char *)e->v1); break; case CTLE_LOADING_DONE: break; case CTLE_PLAY_START: - TmPanelStartToPlay((int)e->v1 / play_mode->rate); w32g_ctle_play_start((int)e->v1 / play_mode->rate); break; case CTLE_PLAY_END: @@ -431,36 +883,38 @@ else sec = sec / play_mode->rate; } + ctl_current_time(sec, (int)e->v2); + display_aq_ratio(); MainWndScrollbarProgressUpdate(sec); - TmPanelSetVoices((int)e->v2); - TmPanelSetTime(sec); + ctl_panel_refresh(); } break; case CTLE_NOTE: - TmCanvasNote((int)e->v1, (int)e->v2, (int)e->v3, (int)e->v4); + ctl_note((int)e->v1, (int)e->v2, (int)e->v3, (int)e->v4); break; case CTLE_MASTER_VOLUME: - TmPanelSetMasterVol((int)e->v1); - if(play_pause_flag) - TmPanelRefresh(); + ctl_master_volume((int)e->v1); break; case CTLE_PROGRAM: + ctl_program((int)e->v1, (int)e->v2); break; case CTLE_VOLUME: - if(e->v1 < MAX_CHANNELS) - w32g_current_volume[e->v1] = e->v2; + ctl_volume((int)e->v1, (int)e->v2); break; case CTLE_EXPRESSION: - if(e->v1 < MAX_CHANNELS) - w32g_current_expression[e->v1] = e->v2; + ctl_expression((int)e->v1, (int)e->v2); break; case CTLE_PANNING: + ctl_panning((int)e->v1, (int)e->v2); break; case CTLE_SUSTAIN: + ctl_sustain((int)e->v1, (int)e->v2); break; case CTLE_PITCH_BEND: + ctl_pitch_bend((int)e->v1, (int)e->v2); break; case CTLE_MOD_WHEEL: + ctl_pitch_bend((int)e->v1, e->v2 ? -2 : 0x2000); break; case CTLE_CHORUS_EFFECT: break; @@ -470,12 +924,16 @@ default_ctl_lyric((uint16)e->v1); break; case CTLE_REFRESH: - TmPanelRefresh(); - if(TmCanvasMode == TMCM_TRACER) - TmCanvasRefresh(); + if(CanvasGetMode() == CANVAS_MODE_KEYBOARD) + { + CanvasReadPanelInfo(0); + CanvasUpdate(0); + CanvasPaint(); + } + break; case CTLE_RESET: - TmCanvasReset(); + ctl_reset(); break; case CTLE_SPEANA: break; @@ -483,8 +941,14 @@ if(w32g_play_active) { MainWndScrollbarProgressUpdate((int)e->v2); - TmPanelSetTime((int)e->v2); - TmPanelRefresh(); + if(!(int)e->v1) + ctl_reset(); + ctl_current_time((int)e->v2, 0); + ctl_panel_refresh(); } + break; + case CTLE_MAXVOICES: + ctl_maxvoices((int)e->v1); + break; } } diff -ruN TiMidity++-2.4.1/interface/w32g_canvas.c TiMidity++-2.5.0/interface/w32g_canvas.c --- TiMidity++-2.4.1/interface/w32g_canvas.c Tue Aug 10 06:21:00 1999 +++ TiMidity++-2.5.0/interface/w32g_canvas.c Thu Jan 1 09:00:00 1970 @@ -1,576 +0,0 @@ -/* - TiMidity++ -- MIDI to WAVE converter and player - Copyright (C) 1999 Masanao Izumo - Copyright (C) 1995 Tuukka Toivonen - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - w32g_i.c: by Daisuke Aoki - Masanao Izumo -*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif /* HAVE_CONFIG_H */ -#include -#include -#include -#include "timidity.h" -#include "common.h" -#include "instrum.h" -#include "playmidi.h" -#include "readmidi.h" -#include "controls.h" -#include "timer.h" -#include "bitset.h" - -#include "w32g.h" -#include "w32g_res.h" - -#define TCTM_MAX_CHANNELS 16 -#define BITMAP_SLEEP_SIZEX 96 -#define BITMAP_SLEEP_SIZEY 64 - -#define TM_CANVAS_XMAX 160 -#define TM_CANVAS_YMAX 160 -#define TM_CANVASMAP_XMAX 16 -#define TM_CANVASMAP_YMAX 16 -#define TM_SEC_PER_BOX 0.05 - -#define TM_DISPLAY_SKEYS 24 /* Display Start KEY */ -#define TM_DISPLAY_NKEYS 96 /* Display Number of KEY */ - -static struct -{ - HWND hwnd; - HWND hParentWnd; - HDC hdc; - HDC hmdc; - HBITMAP hbitmap; - HBITMAP hSleepBitmap; - - RECT rcMe; // Whole window region - RECT rcDr; // Update rectangle region - - // margin - int left; - int top; - int right; - int bottom; - - // bar box size. - int rectx; - int recty; - int spacex; - int spacey; - - char bar[TCTM_MAX_CHANNELS]; - char bar_old[TCTM_MAX_CHANNELS]; - double bar_alive_time[TCTM_MAX_CHANNELS]; /* 0..0.8 */ - double last_bar_time; - uint8 xnote[TCTM_MAX_CHANNELS][TM_DISPLAY_NKEYS/8]; - Bitset channel_on_flags[TCTM_MAX_CHANNELS]; -} TmCanvas; - -int TmCanvasMode = TMCM_SLEEP; - -static HWND hCanvasWnd; -static char CanvasWndClassName[] = "TiMidity Canvas"; -static LRESULT CALLBACK CanvasWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); -static void TmCanvasInit(HWND hwnd); -static void TmCanvasEnd(HWND hwnd); -static void TmCanvasRepaint(HWND hwnd); -static void TmCanvasFillRect(RECT *r, COLORREF c); -static HGDIOBJ hgdiobj_hpen, hgdiobj_hbrush; -static void TmCanvasUpdateChannel(void); - -void w32g_init_canvas(HWND hwnd) -{ - WNDCLASS wndclass ; - hCanvasWnd = 0; - wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; - wndclass.lpfnWndProc = CanvasWndProc ; - wndclass.cbClsExtra = 0 ; - wndclass.cbWndExtra = 0 ; - wndclass.hInstance = hInst ; - wndclass.hIcon = NULL; - wndclass.hCursor = LoadCursor(0,IDC_ARROW) ; - wndclass.hbrBackground = (HBRUSH)(COLOR_SCROLLBAR + 1); - wndclass.lpszMenuName = NULL; - wndclass.lpszClassName = CanvasWndClassName; - RegisterClass(&wndclass); - while(hCanvasWnd==0){ - hCanvasWnd = CreateWindowEx(0,CanvasWndClassName,0, - WS_CHILD, - CW_USEDEFAULT,0,TM_CANVAS_XMAX,TM_CANVAS_YMAX,GetDlgItem(hwnd,IDC_RECT_CANVAS),0,hInst,0); - } - ShowWindow(hCanvasWnd,SW_SHOW); - UpdateWindow(hCanvasWnd); -} - -static LRESULT CALLBACK -CanvasWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) -{ - switch (uMess) - { - case WM_CREATE: - TmCanvasInit(hwnd); - break; - case WM_DESTROY: - TmCanvasEnd(hwnd); - break; - case WM_PAINT: - TmCanvasRepaint(hwnd); - return 0; - case WM_LBUTTONDBLCLK: - w32g_send_rc(RC_EXT_MODE_CHANGE, 0); - break; - default: - return DefWindowProc(hwnd,uMess,wParam,lParam) ; - } - return 0L; -} - -static void TmCanvasInit(HWND hwnd) -{ - RECT rc; - int i; - - TmCanvas.hwnd = hwnd; - TmCanvas.hParentWnd = GetParent(TmCanvas.hwnd); - GetClientRect(TmCanvas.hParentWnd,&rc); - TmCanvas.rcMe = rc; - MoveWindow(TmCanvas.hwnd,0,0,rc.right-rc.left,rc.bottom-rc.top,FALSE); - TmCanvas.left = 3; - TmCanvas.top = 2; - TmCanvas.right = 64; - TmCanvas.bottom = 64; - TmCanvas.rectx = 5; - TmCanvas.recty = 2; - TmCanvas.spacex = 1; - TmCanvas.spacey = 1; - TmCanvas.hdc = GetDC(TmCanvas.hwnd); - TmCanvas.hbitmap = CreateCompatibleBitmap(TmCanvas.hdc, - TM_CANVAS_XMAX, TM_CANVAS_YMAX); - TmCanvas.hmdc = CreateCompatibleDC(TmCanvas.hdc); - SelectObject(TmCanvas.hmdc,TmCanvas.hbitmap); - TmCanvas.hSleepBitmap = LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP_SLEEP)); - for(i = 0; i < TCTM_MAX_CHANNELS; i++) - init_bitset(&TmCanvas.channel_on_flags[i], 128); - TmCanvasReset(); -} - -static void TmCanvasEnd(HWND hwnd) -{ - ReleaseDC(TmCanvas.hwnd, TmCanvas.hdc); - TmCanvas.hdc = 0; -} - -static void TmCanvasRepaint(HWND hwnd) -{ - HDC hdc; - PAINTSTRUCT ps; - - if(!TmCanvas.hdc) - return; - - hdc = BeginPaint(TmCanvas.hwnd, &ps); - BitBltRect(hdc, TmCanvas.hmdc, &ps.rcPaint); - EndPaint(TmCanvas.hwnd, &ps); -} - -static void TmAddRedrawRect(int x, int y, int width, int height) -{ - int x2, y2; - - x2 = x + width; - y2 = y + height; - if(TmCanvas.rcDr.left == ~0L) - { - TmCanvas.rcDr.left = x; - TmCanvas.rcDr.top = y; - TmCanvas.rcDr.right = x2; - TmCanvas.rcDr.bottom = y2; - } - else - { - if(TmCanvas.rcDr.left > x) - TmCanvas.rcDr.left = x; - if(TmCanvas.rcDr.top > y) - TmCanvas.rcDr.top = y; - if(TmCanvas.rcDr.right < x2) - TmCanvas.rcDr.right = x2; - if(TmCanvas.rcDr.bottom < y2) - TmCanvas.rcDr.bottom = y2; - } -} - -static void TmCanvasResetChannelMode(void) -{ - int i, j, x, y; - HPEN pen; - HBRUSH brush; - - pen = tm_colors[TMCC_BACK].pen; - brush = tm_colors[TMCC_BACK].brush; - hgdiobj_hpen = SelectObject(TmCanvas.hmdc, pen); - hgdiobj_hbrush = SelectObject(TmCanvas.hmdc, brush); - - Rectangle(TmCanvas.hmdc, - TmCanvas.rcMe.left, TmCanvas.rcMe.top, - TmCanvas.rcMe.right, TmCanvas.rcMe.bottom); - - pen = tm_colors[TMCC_FORE_HALF].pen; - brush = tm_colors[TMCC_FORE_HALF].brush; - SelectObject(TmCanvas.hmdc, pen); - SelectObject(TmCanvas.hmdc, brush); - - for(j = 0; j < TM_CANVASMAP_YMAX; j++) - { - for(i = 0; i < TM_CANVASMAP_XMAX; i++) - { - x = TmCanvas.left + (TmCanvas.rectx + TmCanvas.spacex) * i; - y = TmCanvas.top + (TmCanvas.recty + TmCanvas.spacey) * j; - Rectangle(TmCanvas.hmdc, x, y, - x + TmCanvas.rectx, y + TmCanvas.recty); - } - } - - SelectObject(TmCanvas.hmdc, hgdiobj_hpen); - SelectObject(TmCanvas.hmdc, hgdiobj_hbrush); -} - -static void TmDrawBar(int x, int y, int len, int c) -{ - HPEN pen; - HBRUSH brush; - static int last_c; - int i; - - if(hgdiobj_hpen == NULL) - { - pen = tm_colors[c].pen; - brush = tm_colors[c].brush; - hgdiobj_hpen = SelectObject(TmCanvas.hmdc, pen); - hgdiobj_hbrush = SelectObject(TmCanvas.hmdc, hgdiobj_hbrush); - } - else if(last_c != c) - { - pen = tm_colors[c].pen; - brush = tm_colors[c].brush; - SelectObject(TmCanvas.hmdc, pen); - SelectObject(TmCanvas.hmdc, hgdiobj_hbrush); - } - last_c = c; - - y = TM_CANVASMAP_YMAX - y - len; // Reverse up/down - - // Set up start position. - x = TmCanvas.left + x * (TmCanvas.rectx + TmCanvas.spacex); - y = TmCanvas.top + y * (TmCanvas.recty + TmCanvas.spacey); - - for(i = 0; i < len; i++, y += (TmCanvas.recty + TmCanvas.spacey)) - { - Rectangle(TmCanvas.hmdc, x, y, - x + TmCanvas.rectx, y + TmCanvas.recty); - TmAddRedrawRect(x, y, TmCanvas.rectx, TmCanvas.recty); - } -} - -static void TmCanvasChannelNote(int status, int ch, int note, int vel) -{ - int i, v; - unsigned int onoff; - double t; - - if(ch >= TCTM_MAX_CHANNELS) - return; - - onoff = (status == VOICE_ON || status == VOICE_SUSTAINED); - onoff <<= (8 * sizeof(onoff) - 1); - set_bitset(&TmCanvas.channel_on_flags[ch], &onoff, note, 1); - - /* increase alive time of NoteON bar */ - if(status == VOICE_ON) - { - v = vel * w32g_current_volume[ch] * w32g_current_volume[ch]; // 0..2^21 - t = v / (127.0 * 127.0 * 8.0); // 0..16 - t *= TM_SEC_PER_BOX; - if(TmCanvas.bar_alive_time[ch] < t) - TmCanvas.bar_alive_time[ch] = t; - } -} - -static void TmCanvasUpdateChannel(void) -{ - double t, past_time; - int i, v; - - t = get_current_calender_time(); - past_time = t - TmCanvas.last_bar_time; - if(past_time < TM_SEC_PER_BOX) - return; - TmCanvas.last_bar_time = t; - - /* decrease alive time of bar */ - for(i = 0; i < TCTM_MAX_CHANNELS; i++) - if(!has_bitset(&TmCanvas.channel_on_flags[i])) - TmCanvas.bar_alive_time[i] -= past_time; - - /* Update bar[] */ - for(i = 0; i < TCTM_MAX_CHANNELS; i++) - { - if(TmCanvas.bar_alive_time[i] <= 0) - { - TmCanvas.bar_alive_time[i] = -1.0; - v = -1; - } - else - { - v = (int)(TmCanvas.bar_alive_time[i] / TM_SEC_PER_BOX); - if(v >= TM_CANVASMAP_YMAX) - v = TM_CANVASMAP_YMAX - 1; - } - TmCanvas.bar[i] = v; - } - - /* Update the display */ - hgdiobj_hpen = hgdiobj_hbrush = 0; - for(i = 0; i < TCTM_MAX_CHANNELS; i++) - { - if(TmCanvas.bar_old[i] < TmCanvas.bar[i]) - TmDrawBar(i, TmCanvas.bar_old[i] + 1, - TmCanvas.bar[i] - TmCanvas.bar_old[i], - TMCC_FORE); // Draw bar boxes - else if(TmCanvas.bar_old[i] > TmCanvas.bar[i]) - TmDrawBar(i, TmCanvas.bar[i] + 1, - TmCanvas.bar_old[i] - TmCanvas.bar[i], - TMCC_FORE_HALF); // Clear bar boxes - TmCanvas.bar_old[i] = TmCanvas.bar[i]; // Save old bar length - } - - if(hgdiobj_hpen) - { - SelectObject(TmCanvas.hmdc, hgdiobj_hpen); - SelectObject(TmCanvas.hmdc, hgdiobj_hbrush); - } - TmCanvasRefresh(); -} - -static void TmCanvasFillRect(RECT *r, COLORREF c) -{ - HPEN hPen; - HBRUSH hBrush; - HGDIOBJ hgdiobj_hpen, hgdiobj_hbrush; - - hPen = CreatePen(PS_SOLID, 1, c); - hBrush = CreateSolidBrush(c); - hgdiobj_hpen = SelectObject(TmCanvas.hmdc, hPen); - hgdiobj_hbrush = SelectObject(TmCanvas.hmdc, hBrush); - Rectangle(TmCanvas.hmdc, r->left, r->top, r->right, r->bottom); - SelectObject(TmCanvas.hmdc, hgdiobj_hpen); - DeleteObject(hPen); - SelectObject(TmCanvas.hmdc, hgdiobj_hbrush); - DeleteObject(hBrush); -} - -#define BITMAP_SLEEP_SIZEX 96 -#define BITMAP_SLEEP_SIZEY 64 -static void TmCanvasResetSleepMode(void) -{ - HDC hdc; - int x, y; - - TmCanvasFillRect(&TmCanvas.rcMe, GetSysColor(COLOR_SCROLLBAR)); - - hdc = CreateCompatibleDC(TmCanvas.hmdc); - SelectObject(hdc, TmCanvas.hSleepBitmap); - x = (TmCanvas.rcMe.right - TmCanvas.rcMe.left - BITMAP_SLEEP_SIZEX)/2; - y = (TmCanvas.rcMe.bottom - TmCanvas.rcMe.top - BITMAP_SLEEP_SIZEY)/2; - if(x<0) x = 0; - if(y<0) y = 0; - BitBlt(TmCanvas.hmdc, x, y, BITMAP_SLEEP_SIZEX, BITMAP_SLEEP_SIZEY, - hdc, 0, 0, SRCCOPY); - DeleteDC(hdc); -} - -static const int black_key[12] = {0,1,0,1,0,0,1,0,1,0,1,0}; -static void TmCanvasResetTracerMode(void) -{ - int ch, note, x, y; - RECT rc; - - TmFillRect(TmCanvas.hmdc, &TmCanvas.rcMe, TMCC_BACK); - for(ch = 0; ch < 16; ch++) - { - rc.left = TmCanvas.left; - rc.top = TmCanvas.top + ch * 4; - rc.right = TmCanvas.left + 8 * 12; - rc.bottom = TmCanvas.top + ch * 4 + 3; - TmFillRect(TmCanvas.hmdc, &rc, TMCC_WHITE); - for(note = 0; note < TM_DISPLAY_NKEYS; note++) - { - if(!black_key[(note+TM_DISPLAY_SKEYS)%12]) - continue; - x = TmCanvas.left + note; - y = TmCanvas.top + ch * 4; - SetPixelV(TmCanvas.hmdc, x, y, TmCc(TMCC_BLACK)); - SetPixelV(TmCanvas.hmdc, x, y+1, TmCc(TMCC_BLACK)); - } - } -} - -static void TmCanvasTracerNote(int status, int ch, int note, int vel) -{ - int prev_key, bitidx, bitmask, is_black, x, y; - - if(note < TM_DISPLAY_SKEYS || - note >= TM_DISPLAY_SKEYS + TM_DISPLAY_NKEYS || - ch >= TCTM_MAX_CHANNELS) - return; - - vel = (status == VOICE_ON || status == VOICE_SUSTAINED); - is_black = black_key[note % 12]; - note -= TM_DISPLAY_SKEYS; - bitidx = note / 8; - bitmask = 1<<(note % 8); - prev_key = !!(TmCanvas.xnote[ch][bitidx] & bitmask); - if(vel == prev_key) - return; - x = TmCanvas.left + note; - y = TmCanvas.top + ch * 4; - if(vel) - { - /* Note On */ - TmCanvas.xnote[ch][bitidx] |= bitmask; - SetPixelV(TmCanvas.hmdc, x, y, TmCc(TMCC_RED)); - SetPixelV(TmCanvas.hmdc, x, y+1, TmCc(TMCC_RED)); - if(!is_black) - SetPixelV(TmCanvas.hmdc, x, y+2, TmCc(TMCC_RED)); - } - else - { - /* Note Off */ - TmCanvas.xnote[ch][bitidx] &= ~bitmask; - if(is_black) - { - SetPixelV(TmCanvas.hmdc, x, y, TmCc(TMCC_BLACK)); - SetPixelV(TmCanvas.hmdc, x, y+1, TmCc(TMCC_BLACK)); - } - else - { - SetPixelV(TmCanvas.hmdc, x, y, TmCc(TMCC_WHITE)); - SetPixelV(TmCanvas.hmdc, x, y+1, TmCc(TMCC_WHITE)); - SetPixelV(TmCanvas.hmdc, x, y+2, TmCc(TMCC_WHITE)); - } - } - TmAddRedrawRect(x, y, 1, 3); -} - -void TmCanvasReset(void) -{ - int i; - - memset(TmCanvas.xnote, 0, sizeof(TmCanvas.xnote)); - TmCanvas.last_bar_time = get_current_calender_time(); - for(i = 0; i < TCTM_MAX_CHANNELS; i++) - { - TmCanvas.bar_alive_time[i] = -1.0; - clear_bitset(&TmCanvas.channel_on_flags[i], 0, 128); - TmCanvas.bar[i] = -1; - TmCanvas.bar_old[i] = -1; - } - switch(TmCanvasMode) - { - case TMCM_SLEEP: - default: - TmCanvasResetSleepMode(); - break; - case TMCM_CHANNEL: - TmCanvasResetChannelMode(); - break; - case TMCM_TRACER: - TmCanvasResetTracerMode(); - break; - } - - TmCanvas.rcDr = TmCanvas.rcMe; - TmCanvasRefresh(); -} - -int TmCanvasChange(void) -{ - int rc = RC_NONE; - - switch(TmCanvasMode) - { - case TMCM_SLEEP: - TmCanvasMode = TMCM_CHANNEL; - if(!ctl->trace_playing) - rc = RC_SYNC_RESTART; - ctl->trace_playing = 1; - break; - case TMCM_CHANNEL: - TmCanvasMode = TMCM_TRACER; - if(!ctl->trace_playing) - rc = RC_SYNC_RESTART; - ctl->trace_playing = 1; - break; - case TMCM_TRACER: - TmCanvasMode = TMCM_SLEEP; - ctl->trace_playing = 0; - break; - default: - TmCanvasMode = TMCM_SLEEP; - ctl->trace_playing = 0; - break; - } - TmCanvasReset(); - return rc; -} - -void TmCanvasUpdateInterval(void) -{ - TmCanvasUpdateChannel(); -} - -void TmCanvasRefresh(void) -{ - if(!TmCanvas.hdc) - return; - if(TmCanvas.rcDr.left != ~0L) - { - BitBltRect(TmCanvas.hdc, TmCanvas.hmdc, &TmCanvas.rcDr); - TmCanvas.rcDr.left = ~0L; - } -} - -void TmCanvasNote(int status, int ch, int note, int vel) -{ - if(ch >= TCTM_MAX_CHANNELS || !TmCanvas.hdc) - return; - switch(TmCanvasMode) - { - default: - case TMCM_SLEEP: - break; - case TMCM_CHANNEL: - TmCanvasChannelNote(status, ch, note, vel); - break; - case TMCM_TRACER: - TmCanvasTracerNote(status, ch, note, vel); - break; - } -} diff -ruN TiMidity++-2.4.1/interface/w32g_i.c TiMidity++-2.5.0/interface/w32g_i.c --- TiMidity++-2.4.1/interface/w32g_i.c Sun Aug 8 22:13:27 1999 +++ TiMidity++-2.5.0/interface/w32g_i.c Wed Aug 25 15:36:42 1999 @@ -17,8 +17,8 @@ along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - w32g_i.c: by Daisuke Aoki - Masanao Izumo + w32g_main.c: Written by Daisuke Aoki + Modified by Masanao Izumo */ #ifdef HAVE_CONFIG_H @@ -28,14 +28,31 @@ #include #include #include +#include +#include +// #include +#if defined(__CYGWIN32__) || defined(__MINGW32__) #include - +#define TPM_TOPALIGN 0x0000L +#define TIME_ONESHOT 0 +#define TIME_PERIODIC 1 +WINAPI int timeSetEvent(UINT uDelay, UINT uResolution, + void *fptc, DWORD dwUser, UINT fuEvent); +WINAPI int timeKillEvent(UINT uTimerID); +#else +#include +#endif /* __CYGWIN32__ */ +#include #ifndef NO_STRING_H #include #else #include #endif -//#include + +#include /* There is no on CYGWIN. + * Edit_* and ListBox_* are defined in + * + */ #include "timidity.h" #include "common.h" @@ -44,102 +61,105 @@ #include "readmidi.h" #include "output.h" #include "controls.h" -#ifdef SUPPORT_SOUNDSPEC -#include "soundspec.h" -#endif /* SUPPORT_SOUNDSPEC */ -#include "aq.h" + #include "w32g.h" #include "w32g_res.h" +#include "w32g_utl.h" +#include "w32g_pref.h" +#include "w32g_subwin.h" + +#if defined(__CYGWIN32__) || defined(__MINGW32__) +#define WIN32GCC +WINAPI void InitCommonControls(void); +#endif -#include /* There is no on CYGWIN. - * Edit_* and ListBox_* are defined in - * - */ -// #include /* FIXME */ -//#if defined(__CYGWIN32__) || defined(__MINGW32__) -//WINAPI void InitCommonControls(void); -//#endif - -#define IDM_STOP 12501 -#define IDM_PAUSE 12502 -#define IDM_PREV 12503 -#define IDM_FOREWARD 12504 -#define IDM_PLAY 12505 -#define IDM_BACKWARD 12506 -#define IDM_NEXT 12507 -#define IDM_CONSOLE 12511 -#define IDM_LIST 12512 -#define IDM_TRACER 12513 -#define IDM_DOC 12514 -#define IDM_WRD 12515 -#define IDM_SOUNDSPEC 12516 +static void InitMainWnd(HWND hStartWnd); -#define STARTWND_XSIZE 100 -#define STARTWND_YSIZE 100 -static char StartWndClassName[] = "MainWindow"; +static void ConsoleWndVerbosityApplyIncDec(int num); +void ConsoleWndVerbosityApply(void); +void CanvasPaintAll(void); +void CanvasReset(void); +void CanvasClear(void); +void CanvasUpdate(int flag); +void CanvasReadPanelInfo(int flag); +void CanvasChange(int mode); +void MPanelPaintAll(void); +void MPanelReadPanelInfo(int flag); +void MPanelReset(void); +void MPanelUpdateAll(void); +void ClearConsoleWnd(void); +void InitListWnd(HWND hParentWnd); +void InitTracerWnd(HWND hParentWnd); +void InitWrdWnd(HWND hParentWnd); +void InitDocWnd(HWND hParentWnd); +void PutsDocWnd(char *str); +void ClearDocWnd(void); +static void DlgPlaylistSave(HWND hwnd); +static void DlgPlaylistOpen(HWND hwnd); +static void DlgDirOpen(HWND hwnd); +static void DlgMidiFileOpen(HWND hwnd); +void VprintfEditCtlWnd(HWND hwnd, char *fmt, va_list argList); +void PutsEditCtlWnd(HWND hwnd, char *str); +void ClearEditCtlWnd(HWND hwnd); + +#ifndef CLR_INVALID +#define CLR_INVALID 0xffffffff +#endif /* CLR_INVALID */ +extern int optind; HINSTANCE hInst; - -// HWND -static HWND hStartWnd; -static HWND hMainWnd = 0; -static HWND hConsoleWnd = 0; -static HWND hTracerWnd = 0; -static HWND hDocWnd = 0; -HWND hListWnd = 0; // global -static HWND hWrdWnd = 0; -static HWND hSettingWnd = 0; - -static struct { - int id; - HWND *hwnd; - int status; -#define SWS_EXIST 0x0001 -#define SWS_ICON 0x0002 -#define SWS_HIDE 0x0004 -} subwindow[] = -{ - {IDM_CONSOLE,&hConsoleWnd, 0}, - {IDM_LIST, &hListWnd, 0}, - {IDM_TRACER,&hTracerWnd, 0}, - {IDM_DOC, &hDocWnd, 0}, - {IDM_WRD, &hWrdWnd, 0}, - {0, NULL, 0} -}; - - -static void GUIThread(void *arglist); -static void update_subwindow(int id); -static HWND ID2SubWindow(int id); -static int ID2SubWindowIdx(int id); -static void MainWndUpdateButton(int id); -static void InitToolbar(HWND hwnd); -static LRESULT CALLBACK StartWinProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); -static WINBOOL CALLBACK MainProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); -static WINBOOL CALLBACK ListWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); -static WINBOOL CALLBACK ConsoleWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); -static void ConsoleWndVerbosityApplyIncDec(int diff); -static void InitListWnd(HWND hParentWnd); -static void InitSettingWnd(HWND hParentWnd); -static void OpenSettingWnd(HWND hwnd); -static void SettingWndSetup(SETTING_TIMIDITY *st); - -static HANDLE w32g_lock_sem = NULL; -static HANDLE w32g_empty_sem = NULL; static int progress_jump = -1; static HWND hMainWndScrollbarProgressWnd; static HWND hMainWndScrollbarVolumeWnd; #define W32G_VOLUME_MAX 200 -static VOLATILE int w32g_wait_for_init; +// HWND +HWND hStartWnd = 0; +HWND hMainWnd = 0; +HWND hDebugWnd = 0; +HWND hConsoleWnd = 0; +HWND hTracerWnd = 0; +HWND hDocWnd = 0; +HWND hListWnd = 0; +HWND hWrdWnd = 0; +HWND hSoundSpecWnd = 0; +HWND hDebugEditWnd = 0; +HWND hDocEditWnd = 0; +// Process. +HANDLE hProcess = 0; -static HANDLE hGUIThread = 0; -static HANDLE hPlayerThread = 0; -static DWORD dwGUIThreadID = 0; +// Main Thread. +HANDLE hMainThread = 0; +HANDLE hPlayerThread = 0; +HANDLE hMainThreadInfo = 0; +DWORD dwMainThreadID = 0; +static volatile int wait_thread_flag = 1; +volatile int IsMainThreadExit = 0; +typedef struct MAINTHREAD_ARGS_ { + int *pArgc; + char ***pArgv; +} MAINTHREAD_ARGS; +void WINAPI MainThread(void *arglist); + +// Window Thread +HANDLE hWindowThread = 0; +HANDLE hWindowThreadInfo = 0; + +// Thread +volatile int ThreadNumMax = 0; + +// Debug Thread +volatile int DebugThreadExit = 1; +volatile HANDLE hDebugThread = 0; +void DebugThreadInit(void); +void PrintfDebugWnd(char *fmt, ...); +void ClearDebugWnd(void); +void InitDebugWnd(HWND hParentWnd); +// Flags int InitMinimizeFlag = 0; int DebugWndStartFlag = 1; int ConsoleWndStartFlag = 0; @@ -152,10 +172,13 @@ int ConsoleWndFlag = 1; int ListWndFlag = 1; int TracerWndFlag = 0; -int DocWndFlag = 0; +int DocWndFlag = 1; int WrdWndFlag = 0; int SoundSpecWndFlag = 0; +int WrdGraphicFlag; +int TraceGraphicFlag; + char *IniFile; char *ConfigFile; char *PlaylistFile; @@ -164,898 +187,3532 @@ char *ConfigFileOpenDir; char *PlaylistFileOpenDir; -int PlayerThreadPriority = THREAD_PRIORITY_NORMAL; -int GUIThreadPriority = THREAD_PRIORITY_NORMAL; +// Priority +int ProcessPriority; +int PlayerThreadPriority; +int MidiPlayerThreadPriority; +int MainThreadPriority; +int GUIThreadPriority; +int TracerThreadPriority; +int WrdThreadPriority; -int WrdGraphicFlag; -int TraceGraphicFlag; +// dir +int SeachDirRecursive = 0; // AIfBNg +// Ini File +int IniFileAutoSave = 1; // INI t@CゥZ[u + +// misc int DocMaxSize; char *DocFileExt; -HWND hDebugEditWnd = 0; -HWND hDocEditWnd = 0; +static volatile int w32g_wait_for_init; +void w32g_send_rc(int rc, int32 value); int w32g_lock_open_file = 0; -#define RC_QUEUE_SIZE 8 -static struct +void TiMidityHeapCheck(void); + +void w32g_i_init(void) { - int rc; - int32 value; -} rc_queue[RC_QUEUE_SIZE]; -static VOLATILE int rc_queue_len, rc_queue_beg, rc_queue_end; + ThreadNumMax++; + hProcess = GetCurrentProcess(); + hWindowThread = GetCurrentThread(); + InitCommonControls(); -void w32g_lock(void) -{ - WaitForSingleObject(w32g_lock_sem, INFINITE); +#ifdef W32GUI_DEBUG + DebugThreadInit(); +#endif } -void w32g_unlock(void) +//int PlayerLanguage = LANGUAGE_ENGLISH; +int PlayerLanguage = LANGUAGE_JAPANESE; +#define PInfoOK 1 +long SetValue(int32 value, int32 min, int32 max) +{ + int32 v = value; + if(v < min) v = min; + else if( v > max) v = max; + return v; +} + +#ifndef WIN32GCC +static void CmdLineToArgv(LPSTR lpCmdLine, int *argc, CHAR ***argv); +extern int win_main(int argc, char **argv); /* timidity.c */ +int WINAPI +WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, +LPSTR lpCmdLine, int nCmdShow) +{ + int argc; + CHAR **argv = NULL; + CmdLineToArgv(lpCmdLine,&argc,&argv); + return win_main(argc, argv); +} +#endif /* WIN32GCC */ + +// *************************************************************************** +// System Function + +void CALLBACK KillProcess(UINT IDEvent, UINT uReserved, DWORD dwUser, + DWORD dwReserved1, DWORD dwReserved2) { - ReleaseSemaphore(w32g_lock_sem, 1, NULL); + exit(0); + // ExitProcess(0); } -void w32g_send_rc(int rc, int32 value) +void OnExit(void) { - int full; +#ifdef W32GUI_DEBUG + PrintfDebugWnd("PostQuitMessage\n"); + Sleep(200); +#endif + PostQuitMessage(0); +} - w32g_lock(); +static int OnExitReadyWait = 200; +void OnExitReady(void) +{ + int i; +#ifdef W32GUI_DEBUG + PrintfDebugWnd("OnExitReady: Start.\n"); +#endif + w32g_send_rc(RC_STOP, 0); - if(rc_queue_len == RC_QUEUE_SIZE) - { - /* Over flow. Remove the oldest message */ - rc_queue_len--; - rc_queue_beg = (rc_queue_beg + 1) % RC_QUEUE_SIZE; - full = 1; - } - else - full = 0; + /* Exit after 10 sec. */ + + timeSetEvent(10000, 1000, KillProcess, 0, TIME_ONESHOT); + + /* Wait really stopping to play */ + i = 1000/OnExitReadyWait; /* 1 sec. */ + while(w32g_play_active && i-- > 0) + { + Sleep(OnExitReadyWait); + VOLATILE_TOUCH(w32g_play_active); + } - rc_queue_len++; - rc_queue[rc_queue_end].rc = rc; - rc_queue[rc_queue_end].value = value; - rc_queue_end = (rc_queue_end + 1) % RC_QUEUE_SIZE; - ReleaseSemaphore(w32g_empty_sem, 1, NULL); - w32g_unlock(); +#ifdef W32GUI_DEBUG + PrintfDebugWnd("OnExitReady: End.\n"); +#endif } -int w32g_get_rc(int32 *value, int wait_if_empty) +void OnQuit(void) { - int rc; + SendMessage(hStartWnd, WM_CLOSE, 0, 0); +} - while(rc_queue_len == 0) - { - if(!wait_if_empty) - return RC_NONE; - WaitForSingleObject(w32g_empty_sem, INFINITE); - VOLATILE_TOUCH(rc_queue_len); - } - w32g_lock(); - rc = rc_queue[rc_queue_beg].rc; - *value = rc_queue[rc_queue_beg].value; - rc_queue_len--; - rc_queue_beg = (rc_queue_beg + 1) % RC_QUEUE_SIZE; +// *************************************************************************** +// Start Window +// EChEBEChEiBfobOp +// g\gpBPeEChE +// B - w32g_unlock(); - return rc; +#define STARTWND_XSIZE 100 +#define STARTWND_YSIZE 100 +static char StartWndClassName[] = "TiMidity_Win32GUI"; + +static LRESULT CALLBACK StartWinProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +void InitStartWnd(int nCmdShow) +{ + WNDCLASS wndclass ; + wndclass.style = CS_HREDRAW | CS_VREDRAW ; + wndclass.lpfnWndProc = StartWinProc ; + wndclass.cbClsExtra = 0 ; + wndclass.cbWndExtra = 0 ; + wndclass.hInstance = hInst ; + wndclass.hIcon = LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON_TIMIDITY)) ; + wndclass.hCursor = LoadCursor(0,IDC_ARROW) ; + wndclass.hbrBackground = (HBRUSH)(COLOR_SCROLLBAR + 1); + wndclass.lpszMenuName = NULL; + wndclass.lpszClassName = StartWndClassName; + + RegisterClass(&wndclass); + hStartWnd = CreateWindowEx(WS_EX_DLGMODALFRAME,StartWndClassName,0, + WS_OVERLAPPED | WS_MINIMIZEBOX | WS_SYSMENU | WS_CLIPCHILDREN , + CW_USEDEFAULT,0,STARTWND_XSIZE,STARTWND_YSIZE,0,0,hInst,0); + ShowWindow(hStartWnd,SW_HIDE); +// ShowWindow(hStartWnd,SW_SHOW); +// ShowWindow(hStartWnd,nCmdShow); + UpdateWindow(hStartWnd); + InitMainWnd(hStartWnd); + InitConsoleWnd(hStartWnd); + InitListWnd(hStartWnd); + InitTracerWnd(hStartWnd); + InitDocWnd(hStartWnd); + InitWrdWnd(hStartWnd); + InitSoundSpecWnd(hStartWnd); + hMainWndScrollbarProgressWnd = GetDlgItem(hMainWnd, IDC_SCROLLBAR_PROGRESS); + hMainWndScrollbarVolumeWnd = GetDlgItem(hMainWnd, IDC_SCROLLBAR_VOLUME); + EnableScrollBar(hMainWndScrollbarVolumeWnd, SB_CTL,ESB_ENABLE_BOTH); + SetScrollRange(hMainWndScrollbarVolumeWnd, SB_CTL, + 0, W32G_VOLUME_MAX, TRUE); + SetScrollPos(hMainWndScrollbarVolumeWnd, SB_CTL, + W32G_VOLUME_MAX - amplification, TRUE); } -static void NotImplemented(char *msg) +LRESULT CALLBACK +StartWinProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) { - char buff[BUFSIZ]; - strcpy(buff, msg); - strcat(buff, " is not implemented."); - w32g_msg_box(buff, "TiMidity Notice", MB_OK); + LRESULT res; + + switch (uMess) + { + case WM_DESTROY: + PostQuitMessage(0); + break; + default: + return DefWindowProc(hwnd,uMess,wParam,lParam); + } + return 0L; } +/*****************************************************************************/ +// Main Window -#define MAX_PLAY_MODE_LIST 8 -extern PlayMode w32_play_mode, wave_play_mode, raw_play_mode, au_play_mode, - aiff_play_mode; -static struct -{ - PlayMode *play_mode; - int32 orig_encoding; -} w32g_play_mode_list[] = -{ -{&w32_play_mode,0}, -{&wave_play_mode,0}, -{&au_play_mode,0}, -{&aiff_play_mode,0}, -{&raw_play_mode,0}, -{NULL,0} +#define SWS_EXIST 0x0001 +#define SWS_ICON 0x0002 +#define SWS_HIDE 0x0004 +typedef struct SUBWINDOW_ { + HWND *hwnd; + int status; +} SUBWINDOW; +SUBWINDOW subwindow[] = +{ + {&hConsoleWnd,0}, + {&hListWnd,0}, + {&hTracerWnd,0}, + {&hDocWnd,0}, + {&hWrdWnd,0}, + {&hSoundSpecWnd,0}, + {NULL,0} }; -void w32g_i_init(void) +int SubWindowMax = 3; +SUBWINDOW SubWindowHistory[] = { - int i; - /* Save the original encoding */ - for(i = 0; w32g_play_mode_list[i].play_mode != NULL; i++) - { - w32g_play_mode_list[i].orig_encoding = - w32g_play_mode_list[i].play_mode->encoding; - } + {&hConsoleWnd,0}, + {&hListWnd,0}, + {&hTracerWnd,0}, + {&hDocWnd,0}, + {&hWrdWnd,0}, + {&hSoundSpecWnd,0}, + {NULL,0} +}; + +BOOL CALLBACK MainProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); + +void update_subwindow(void); +void OnShow(void); +void OnHide(void); + +static void InitMainWnd(HWND hParentWnd) +{ + HICON hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON_TIMIDITY)); + hMainWnd = CreateDialog(hInst,MAKEINTRESOURCE(IDD_DIALOG_MAIN),hParentWnd,MainProc); + if (hIcon!=NULL) SendMessage(hMainWnd,WM_SETICON,FALSE,(LPARAM)hIcon); + { // Set the title of the main window again. + char buffer[256]; + SendMessage( hMainWnd, WM_GETTEXT, (WPARAM)255, (LPARAM)buffer); + SendMessage( hMainWnd, WM_SETTEXT, (WPARAM)0, (LPARAM)buffer); + } } -void PutsConsoleWnd(char *str) -{ - HWND hwnd; +void MainCmdProc(HWND hwnd, int wId, HWND hwndCtl, UINT wNotifyCode); - if(!hConsoleWnd || - !IsWindow(hConsoleWnd) || - !IsDlgButtonChecked(hConsoleWnd,IDC_CHECKBOX_VALID)) - return; +void MainWndSetPauseButton(int flag); +void MainWndSetPlayButton(int flag); - hwnd = GetDlgItem(hConsoleWnd, IDC_EDIT_TERMINAL); - if(!hwnd) - return; - w32g_lock(); - Edit_SetSel(hwnd, 0, -1); - Edit_SetSel(hwnd, -1, -1); - Edit_ReplaceSel(hwnd, str); - w32g_unlock(); -} +void MainWndToggleConsoleButton(void); +void MainWndUpdateConsoleButton(void); +void MainWndToggleTracerButton(void); +void MainWndUpdateTracerButton(void); +void MainWndToggleListButton(void); +void MainWndUpdateListButton(void); +void MainWndToggleDocButton(void); +void MainWndUpdateDocButton(void); +void MainWndToggleWrdButton(void); +void MainWndUpdateWrdButton(void); +void MainWndToggleSoundSpecButton(void); +void MainWndUpdateSoundSpecButton(void); -int SubWindowMax = 2; +void ShowSubWindow(HWND hwnd,int showflag); +void ToggleSubWindow(HWND hwnd); +static void VersionWnd(HWND hParentWnd); +static void TiMidityWnd(HWND hParentWnd); -void OnExit(void) -{ - PostQuitMessage(0); -} +static void InitCanvasWnd(HWND hwnd); +static void CanvasInit(HWND hwnd); +static void InitPanelWnd(HWND hwnd); +static void MPanelInit(HWND hwnd); -void OnDestroy(void) -{ - TmFreeColor(); - OnExit(); -} +static void InitMainToolbar(HWND hwnd); +static void InitSubWndToolbar(HWND hwnd); -static void ToggleSubWindow(int id) +static UINT PlayerForwardAndBackwardEventID = 0; +static void CALLBACK PlayerForward(UINT IDEvent, UINT uReserved, DWORD dwUser, + DWORD dwReserved1, DWORD dwReserved2) { - HWND hwnd = ID2SubWindow(id); - - if(!hwnd) - return; - if(IsWindowVisible(hwnd)) - ShowWindow(hwnd,SW_HIDE); - else - ShowWindow(hwnd,SW_SHOW); - update_subwindow(id); - MainWndUpdateButton(id); + w32g_send_rc(RC_FORWARD, play_mode->rate); } -static void DlgMidiFileOpen(void) -{ - OPENFILENAME ofn; - static char pFileName[16536]; - char *dir; - static char *filter = - "Midi file\0*.mid;*.smf;*.rcp;*.r36;*.g18;*.g36\0" - "Archive file\0*.lzh;*.zip;*.gz;*.tgz\0" - "All files\0*.*\0" - "\0\0"; - if(w32g_lock_open_file) - return; +static void CALLBACK PlayerBackward(UINT IDEvent, UINT uReserved, DWORD dwUser, + DWORD dwReserved1, DWORD dwReserved2) +{ + w32g_send_rc(RC_BACK, play_mode->rate); +} - memset(pFileName, 0, sizeof(pFileName)); - memset(&ofn, 0, sizeof(OPENFILENAME)); - if(MidiFileOpenDir[0]) - dir = MidiFileOpenDir; - else - dir = NULL; +BOOL CALLBACK +MainProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + // PrintfDebugWnd("MainProc: Mess%lx WPARAM%lx LPARAM%lx\n",uMess,wParam,lParam); + switch (uMess) + { + case WM_INITDIALOG: + update_subwindow(); + MainWndUpdateConsoleButton(); + MainWndUpdateTracerButton(); + MainWndUpdateListButton(); + MainWndUpdateDocButton(); + MainWndUpdateWrdButton(); + MainWndUpdateSoundSpecButton(); + InitPanelWnd(hwnd); + InitCanvasWnd(hwnd); + InitMainToolbar(hwnd); + InitSubWndToolbar(hwnd); + { + HMENU hMenu = GetSystemMenu(hwnd, FALSE); +#if 1 + RemoveMenu(hMenu,SC_MAXIMIZE,MF_BYCOMMAND); + RemoveMenu(hMenu,SC_SIZE,MF_BYCOMMAND); +#else + EnableMenuItem(hMenu, SC_MAXIMIZE, MF_BYCOMMAND | MF_GRAYED); + EnableMenuItem(hMenu, SC_SIZE, MF_BYCOMMAND | MF_GRAYED); +#endif + EnableMenuItem(hMenu, SC_MOVE, MF_BYCOMMAND | MF_GRAYED); + InsertMenu(hMenu, 0, MF_BYPOSITION | MF_SEPARATOR, 0, 0); + InsertMenu(hMenu, 0, MF_BYPOSITION, SC_SCREENSAVE, "Screen Saver"); + InsertMenu(hMenu, 0, MF_BYPOSITION | MF_SEPARATOR, 0, 0); + InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, IDM_STOP, "Stop"); + InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, IDM_PAUSE, "Pause"); + InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, IDM_PREV, "Prev"); + InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, IDM_NEXT, "Next"); + InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, IDM_PLAY, "Play"); + DrawMenuBar(hwnd); + } + return FALSE; + HANDLE_MSG(hwnd,WM_COMMAND,MainCmdProc); - ofn.lStructSize = sizeof(OPENFILENAME); - ofn.hwndOwner = 0; - ofn.hInstance = hInst ; - ofn.lpstrFilter = filter; - ofn.lpstrCustomFilter= 0; - ofn.nMaxCustFilter = 1; - ofn.nFilterIndex = 1 ; - ofn.lpstrFile = pFileName; - ofn.nMaxFile = sizeof(pFileName); - ofn.lpstrFileTitle = 0; - ofn.nMaxFileTitle = 0; - ofn.lpstrInitialDir = dir; - ofn.lpstrTitle = 0; - ofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST - | OFN_ALLOWMULTISELECT | OFN_EXPLORER | OFN_READONLY; - ofn.lpstrDefExt = 0; - ofn.lCustData = 0; - ofn.lpfnHook = 0; - ofn.lpTemplateName = 0; + case WM_CLOSE: + DestroyWindow(hStartWnd); + break; - if(!GetOpenFileName(&ofn)) - return; - w32g_lock_open_file = 1; - w32g_send_rc(RC_EXT_LOAD_FILE, (int32)pFileName); -} + case WM_SIZE: + if(wParam == SIZE_MINIMIZED){ + update_subwindow(); + OnHide(); + } + return FALSE; + case WM_QUERYOPEN: + OnShow(); + return FALSE; + case WM_DROPFILES: + w32g_send_rc(RC_EXT_DROP, (int32)wParam); + return FALSE; + case WM_HSCROLL: { + int nScrollCode = (int)LOWORD(wParam); + int nPos = (int) HIWORD(wParam); + HWND bar = (HWND)lParam; + + if(bar != hMainWndScrollbarProgressWnd) + break; + + switch(nScrollCode) + { + case SB_THUMBTRACK: + case SB_THUMBPOSITION: + progress_jump = nPos; + break; + case SB_LINELEFT: + progress_jump = GetScrollPos(bar, SB_CTL) - 1; + if(progress_jump < 0) + progress_jump = 0; + break; + case SB_PAGELEFT: + progress_jump = GetScrollPos(bar, SB_CTL) - 10; + if(progress_jump < 0) + progress_jump = 0; + break; + case SB_LINERIGHT: + progress_jump = GetScrollPos(bar, SB_CTL) + 1; + break; + case SB_PAGERIGHT: + progress_jump = GetScrollPos(bar, SB_CTL) + 10; + break; + case SB_ENDSCROLL: + if(progress_jump != -1) + { + w32g_send_rc(RC_JUMP, progress_jump * play_mode->rate); + SetScrollPos(hMainWndScrollbarProgressWnd, SB_CTL, + progress_jump, TRUE); + progress_jump = -1; + } + break; + } + break; + } + break; -static void VersionWnd() -{ - char VersionText[2048]; + case WM_VSCROLL: { + int nScrollCode = (int) LOWORD(wParam); + int nPos = (int) HIWORD(wParam); + HWND bar = (HWND) lParam; + static int pos = -1; + + if(bar != hMainWndScrollbarVolumeWnd) + break; + + switch(nScrollCode) + { + case SB_THUMBTRACK: + case SB_THUMBPOSITION: + pos = nPos; + break; + case SB_LINEUP: + case SB_PAGEUP: + pos = GetScrollPos(bar, SB_CTL) - 5; + if(pos < 0) + pos = 0; + break; + case SB_LINEDOWN: + case SB_PAGEDOWN: + pos = GetScrollPos(bar, SB_CTL) + 5; + if(pos > W32G_VOLUME_MAX) + pos = W32G_VOLUME_MAX; + break; + case SB_ENDSCROLL: + if(pos != -1) + { + w32g_send_rc(RC_CHANGE_VOLUME, + (W32G_VOLUME_MAX - pos) - amplification); + SetScrollPos(bar, SB_CTL, pos, TRUE); + pos = -1; + } + break; + } + } + break; - sprintf(VersionText, -" TiMidity++ version %s -- MIDI to WAVE converter and player" NLS -" Copyright (C) 1999 Masanao Izumo " NLS -" Copyright (C) 1995 Tuukka Toivonen " NLS -NLS -" Windows version by" NLS -" Davide Moretti ." NLS -" Nicolas Witczak." NLS -" Daisuke Aoki ." NLS -" Masanao Izumo ." NLS -NLS -" This program is free software; you can redistribute it and/or modify" NLS -" it under the terms of the GNU General Public License as published by" NLS -" the Free Software Foundation; either version 2 of the License, or" NLS -" (at your option) any later version." NLS -NLS -" This program is distributed in the hope that it will be useful," NLS -" but WITHOUT ANY WARRANTY; without even the implied warranty of"NLS -" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the" NLS -" GNU General Public License for more details." NLS -NLS -" You should have received a copy of the GNU General Public License" NLS -" along with this program; if not, write to the Free Software" NLS -" Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." NLS - ,timidity_version); - w32g_msg_box(VersionText, "Version", MB_OK); + case WM_SYSCOMMAND: + switch(wParam){ + case IDM_STOP: + case IDM_PAUSE: + case IDM_PREV: + case IDM_PLAY: + case IDM_NEXT: + case IDM_FOREWARD: + case IDM_BACKWARD: + SendMessage(hwnd,WM_COMMAND,wParam,(LPARAM)NULL); + break; + default: + break; + } + return FALSE; + /* + case WM_SETFOCUS: + HideCaret((HWND)wParam); + break; + case WM_KILLFOCUS: + ShowCaret((HWND)wParam); + break; + */ + case WM_NOTIFY: + switch(wParam) { + case IDC_TOOLBARWINDOW_MAIN:{ + LPTBNOTIFY TbNotify = (LPTBNOTIFY)lParam; + switch(TbNotify->iItem){ + case IDM_BACKWARD: + if(TbNotify->hdr.code==TBN_BEGINDRAG){ +#ifdef W32GUI_DEBUG + //PrintfDebugWnd("IDM_BACKWARD: BUTTON ON\n"); +#endif + PlayerBackward(0,0,0,0,0); + PlayerForwardAndBackwardEventID = + timeSetEvent(100, 100, PlayerBackward, 0, TIME_PERIODIC); + } + if(PlayerForwardAndBackwardEventID != 0) + if(TbNotify->hdr.code==TBN_ENDDRAG){ +#ifdef W32GUI_DEBUG + //PrintfDebugWnd("IDM_BACKWARD: BUTTON OFF\n"); +#endif + timeKillEvent(PlayerForwardAndBackwardEventID); + PlayerForwardAndBackwardEventID = 0; + } + break; + case IDM_FOREWARD: + if(TbNotify->hdr.code ==TBN_BEGINDRAG && + PlayerForwardAndBackwardEventID == 0){ +#ifdef W32GUI_DEBUG + //PrintfDebugWnd("IDM_FOREWARD: BUTTON ON\n"); +#endif + PlayerForward(0,0,0,0,0); + PlayerForwardAndBackwardEventID = + timeSetEvent(100,300,PlayerForward,0,TIME_PERIODIC); + } + else if((TbNotify->hdr.code == TBN_ENDDRAG || + TbNotify->hdr.code == NM_CLICK || + TbNotify->hdr.code == NM_RCLICK) && + PlayerForwardAndBackwardEventID != 0) + { +#ifdef W32GUI_DEBUG + //PrintfDebugWnd("IDM_FOREWARD: BUTTON OFF\n"); +#endif + timeKillEvent(PlayerForwardAndBackwardEventID); + PlayerForwardAndBackwardEventID = 0; + } + break; + default: + break; + } + } + break; /* end of case IDC_TOOLBARWINDOW_MAIN */ + default: + break; + } + return FALSE; + default: + return FALSE; + } + return FALSE; } void MainCmdProc(HWND hwnd, int wId, HWND hwndCtl, UINT wNotifyCode) { + int iRes; + // PrintfDebugWnd("WM_COMMAND: ID%lx HWND%lx CODE%lx\n",wId,hwndCtl,wNotifyCode); switch(wId) { case IDM_STOP: - w32g_send_rc(RC_STOP, 0); - break; + w32g_send_rc(RC_STOP, 0); + break; case IDM_PAUSE: - w32g_send_rc(RC_TOGGLE_PAUSE, 0); - break; + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_MAIN, + TB_CHECKBUTTON, IDM_PAUSE, + (LPARAM)MAKELONG(!play_pause_flag, 0)); + w32g_send_rc(RC_TOGGLE_PAUSE, 0); + break; case IDM_PREV: - w32g_send_rc(RC_REALLY_PREVIOUS, 0); - break; + w32g_send_rc(RC_REALLY_PREVIOUS, 0); + break; case IDM_BACKWARD: - w32g_send_rc(RC_BACK, play_mode->rate * 1); - break; + /* Do nothing here. See WM_NOTIFY in MainProc() */ + break; case IDM_PLAY: - if(play_pause_flag) - { - SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_MAIN, - TB_CHECKBUTTON, IDM_PAUSE, - (LPARAM)MAKELONG(FALSE, 0)); - w32g_send_rc(RC_TOGGLE_PAUSE, 0); - } - if(!w32g_play_active) - w32g_send_rc(RC_LOAD_FILE, 0); - break; + if(play_pause_flag) + { + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_MAIN, + TB_CHECKBUTTON, IDM_PAUSE, + (LPARAM)MAKELONG(FALSE, 0)); + w32g_send_rc(RC_TOGGLE_PAUSE, 0); + } + if(!w32g_play_active) + w32g_send_rc(RC_LOAD_FILE, 0); + break; case IDM_FOREWARD: - w32g_send_rc(RC_FORWARD, play_mode->rate * 1); - break; + /* Do nothing here. See WM_NOTIFY in MainProc() */ + break; case IDM_NEXT: - w32g_send_rc(RC_NEXT, 0); - break; - + w32g_send_rc(RC_NEXT, 0); + break; case IDM_CONSOLE: case IDM_MWCONSOLE: - ToggleSubWindow(IDM_CONSOLE); - break; + ToggleSubWindow(hConsoleWnd); + break; case IDM_TRACER: case IDM_MWTRACER: - NotImplemented("Tracer"); - SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, - TB_CHECKBUTTON, IDM_TRACER, - (LPARAM)MAKELONG(FALSE, 0)); - break; + MainWndUpdateTracerButton(); + MessageBox(hwnd, "Not Supported.","Warning!",MB_OK); + break; case IDM_LIST: case IDM_MWPLAYLIST: - if(!hListWnd) - { - InitListWnd(hStartWnd); - w32g_send_rc(RC_EXT_UPDATE_PLAYLIST, 0); - } - ToggleSubWindow(IDM_LIST); - break; + ToggleSubWindow(hListWnd); + if(IsWindowVisible(hListWnd)) + w32g_send_rc(RC_EXT_UPDATE_PLAYLIST, 0); + break; case IDM_DOC: case IDM_MWDOCUMENT: - NotImplemented("Document"); - SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, - TB_CHECKBUTTON, IDM_DOC, - (LPARAM)MAKELONG(FALSE, 0)); - break; + ToggleSubWindow(hDocWnd); +// if(IsWindowVisible(hDocWnd)) +// w32g_send_rc(RC_EXT_DOC, 0); + break; case IDM_WRD: case IDM_MWWRDTRACER: - NotImplemented("WRD"); - SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, - TB_CHECKBUTTON, IDM_WRD, - (LPARAM)MAKELONG(FALSE, 0)); - break; + MainWndUpdateWrdButton(); + MessageBox(hwnd, "Not Supported.","Warning!",MB_OK); + break; case IDM_SOUNDSPEC: case IDM_MWSOUNDSPEC: - NotImplemented("Sound spectrogram"); - SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, - TB_CHECKBUTTON, IDM_SOUNDSPEC, - (LPARAM)MAKELONG(FALSE, 0)); - break; + MainWndUpdateSoundSpecButton(); + MessageBox(hwnd, "Not Supported.","Warning!",MB_OK); + break; case IDOK: - break; + break; case IDCANCEL: - OnExit(); - break; + OnQuit(); + break; case IDM_MFOPENFILE: - DlgMidiFileOpen(); - break; + DlgMidiFileOpen(hwnd); + break; case IDM_MFOPENDIR: - NotImplemented("Open Directory"); - break; + DlgDirOpen(hwnd); + break; case IDM_MFLOADPLAYLIST: - NotImplemented("Load Playlist"); - break; + DlgPlaylistOpen(hwnd); + break; case IDM_MFSAVEPLAYLISTAS: - NotImplemented("Save Playlist"); - break; + DlgPlaylistSave(hwnd); + break; case IDM_MFEXIT: - OnExit(); - break; + OnQuit(); + break; + case IDM_SETTING: - if(!hSettingWnd) - InitSettingWnd(hStartWnd); - OpenSettingWnd(hwnd); - break; + PrefWndCreate(hStartWnd); + break; + case IDM_MCSAVEINIFILE: - SaveIniFile(sp_current, st_current); - w32g_has_ini_file = 1; - break; + VOLATILE_TOUCH(PrefWndDoing); + if(PrefWndDoing){ + MessageBox(hMainWnd, "Can't Save Ini file while preference dialog.", + "Warning", MB_OK); + break; + } + SaveIniFile(sp_current, st_current); + break; case IDM_MCLOADINIFILE: - if(w32g_has_ini_file) - { - LoadIniFile(sp_current, st_current); - SettingWndSetup(st_current); - OpenSettingWnd(hwnd); - } - else - w32g_msg_box("Can't load ini file.", - "TiMidity Warning", MB_OK); - break; + if(!w32g_has_ini_file) { + MessageBox(hMainWnd, "Can't load Ini file.", + "Warning", MB_OK); + break; + } + + VOLATILE_TOUCH(PrefWndDoing); + if(PrefWndDoing){ + MessageBox(hMainWnd, "Can't load Ini file while preference dialog.", + "Warning", MB_OK); + break; + } + LoadIniFile(sp_temp,st_temp); + PrefWndCreate(hStartWnd); + break; + case IDM_MWDEBUG: +#ifdef W32GUI_DEBUG + if(IsWindowVisible(hDebugWnd)) + ShowWindow(hDebugWnd,SW_HIDE); + else + ShowWindow(hDebugWnd,SW_SHOW); +#endif + break; + case IDM_MHTOPIC: + MessageBox(hwnd, "Not Supported.","Warning!",MB_OK); + break; + case IDM_MHHELP: + MessageBox(hwnd, "Not Supported.","Warning!",MB_OK); + break; case IDM_MHVERSION: - VersionWnd(); - break; + VersionWnd(hwnd); + break; + case IDM_MHTIMIDITY: + TiMidityWnd(hwnd); + break; } } -static WINBOOL CALLBACK -MainProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) -{ - HMENU hMenu; - - switch (uMess) - { - case WM_INITDIALOG: - hMenu = GetSystemMenu(hwnd, FALSE); - EnableMenuItem(hMenu, SC_MAXIMIZE, MF_BYCOMMAND | MF_GRAYED); - EnableMenuItem(hMenu, SC_SIZE, MF_BYCOMMAND | MF_GRAYED); - EnableMenuItem(hMenu, SC_MOVE, MF_BYCOMMAND | MF_GRAYED); - InsertMenu(hMenu, 0, MF_BYPOSITION | MF_SEPARATOR, 0, 0); - InsertMenu(hMenu, 0, MF_BYPOSITION, SC_SCREENSAVE, "Screen Saver"); - InsertMenu(hMenu, 0, MF_BYPOSITION | MF_SEPARATOR, 0, 0); - InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, IDM_STOP, "Stop"); - InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, IDM_PAUSE, "Pause"); - InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, IDM_PREV, "Prev"); - InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, IDM_NEXT, "Next"); - InsertMenu(hMenu, 0, MF_BYPOSITION | MF_STRING, IDM_PLAY, "Play"); - DrawMenuBar(hwnd); - break; - - HANDLE_MSG(hwnd,WM_COMMAND,MainCmdProc); - HANDLE_MSG(hwnd,WM_CLOSE,DestroyWindow); - case WM_DESTROY: - OnDestroy(); - break; - - case WM_SIZE: - if(wParam == SIZE_MINIMIZED) { - update_subwindow(-1); +void update_subwindow(void) +{ + SUBWINDOW *s = subwindow; + int i; + for(i=0;s[i].hwnd!=NULL;i++){ + if(IsWindow(*(s[i].hwnd))) + s[i].status |= SWS_EXIST; + else { + s[i].status = 0; + continue; + } + if(IsIconic(*(s[i].hwnd))) + s[i].status |= SWS_ICON; + else + s[i].status &= ~ SWS_ICON; + if(IsWindowVisible(*(s[i].hwnd))) + s[i].status &= ~ SWS_HIDE; + else + s[i].status |= SWS_HIDE; } - break; - - case WM_DROPFILES: - w32g_send_rc(RC_EXT_DROP, (int32)wParam); - break; - - case WM_HSCROLL: { - int nScrollCode = (int)LOWORD(wParam); - int nPos = (int) HIWORD(wParam); - HWND bar = (HWND)lParam; - - if(bar != hMainWndScrollbarProgressWnd) - break; - - switch(nScrollCode) - { - case SB_THUMBTRACK: - case SB_THUMBPOSITION: - progress_jump = nPos; - break; - case SB_LINELEFT: - progress_jump = GetScrollPos(bar, SB_CTL) - 1; - if(progress_jump < 0) - progress_jump = 0; - break; - case SB_PAGELEFT: - progress_jump = GetScrollPos(bar, SB_CTL) - 10; - if(progress_jump < 0) - progress_jump = 0; - break; - case SB_LINERIGHT: - progress_jump = GetScrollPos(bar, SB_CTL) + 1; - break; - case SB_PAGERIGHT: - progress_jump = GetScrollPos(bar, SB_CTL) + 10; - break; - case SB_ENDSCROLL: - if(progress_jump != -1) - { - w32g_send_rc(RC_JUMP, progress_jump * play_mode->rate); - SetScrollPos(hMainWndScrollbarProgressWnd, SB_CTL, - progress_jump, TRUE); - progress_jump = -1; - } - break; - } - break; - } - break; - - case WM_VSCROLL: { - int nScrollCode = (int) LOWORD(wParam); - int nPos = (int) HIWORD(wParam); - HWND bar = (HWND) lParam; - static int pos = -1; - - if(bar != hMainWndScrollbarVolumeWnd) - break; - - switch(nScrollCode) - { - case SB_THUMBTRACK: - case SB_THUMBPOSITION: - pos = nPos; - break; - case SB_LINEUP: - case SB_PAGEUP: - pos = GetScrollPos(bar, SB_CTL) - 5; - if(pos < 0) - pos = 0; - break; - case SB_LINEDOWN: - case SB_PAGEDOWN: - pos = GetScrollPos(bar, SB_CTL) + 5; - if(pos > W32G_VOLUME_MAX) - pos = W32G_VOLUME_MAX; - break; - case SB_ENDSCROLL: - if(pos != -1) - { - w32g_send_rc(RC_CHANGE_VOLUME, - (W32G_VOLUME_MAX - pos) - amplification); - SetScrollPos(bar, SB_CTL, pos, TRUE); - pos = -1; - } - break; - } - } - break; +} - case WM_SYSCOMMAND: - switch(wParam) - { - case IDM_STOP: - case IDM_PAUSE: - case IDM_PREV: - case IDM_PLAY: - case IDM_NEXT: - SendMessage(hwnd,WM_COMMAND,wParam,NULL); - break; - default: - break; - } - break; - } - return 0; +void MainWndSetPauseButton(int flag) +{ + if(flag) + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_MAIN, + TB_CHECKBUTTON, IDM_PAUSE, (LPARAM)MAKELONG(TRUE, 0)); + else + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_MAIN, + TB_CHECKBUTTON, IDM_PAUSE, (LPARAM)MAKELONG(FALSE, 0)); } -static void update_subwindow(int id) +void MainWndSetPlayButton(int flag) { - int i; + return; +} - if(id == -1) - { - for(i = 0; subwindow[i].hwnd != NULL; i++) - update_subwindow(subwindow[i].id); - } +void MainWndUpdateConsoleButton(void) +{ + if(IsWindowVisible(hConsoleWnd)) + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, + TB_CHECKBUTTON, IDM_CONSOLE, (LPARAM)MAKELONG(TRUE, 0)); + else + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, + TB_CHECKBUTTON, IDM_CONSOLE, (LPARAM)MAKELONG(FALSE, 0)); +} + +void MainWndUpdateListButton(void) +{ + if(IsWindowVisible(hListWnd)) + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, + TB_CHECKBUTTON, IDM_LIST, (LPARAM)MAKELONG(TRUE, 0)); + else + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, + TB_CHECKBUTTON, IDM_LIST, (LPARAM)MAKELONG(FALSE, 0)); +} + +void MainWndUpdateDocButton(void) +{ + if(IsWindowVisible(hDocWnd)) + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, + TB_CHECKBUTTON, IDM_DOC, (LPARAM)MAKELONG(TRUE, 0)); + else + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, + TB_CHECKBUTTON, IDM_DOC, (LPARAM)MAKELONG(FALSE, 0)); +} + +void MainWndUpdateTracerButton(void) +{ + if(IsWindowVisible(hTracerWnd)) + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, + TB_CHECKBUTTON, IDM_TRACER, + (LPARAM)MAKELONG(TRUE, 0)); + else + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, + TB_CHECKBUTTON, IDM_TRACER, + (LPARAM)MAKELONG(FALSE, 0)); +} + +void MainWndUpdateWrdButton(void) +{ + if(IsWindowVisible(hWrdWnd)) + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, + TB_CHECKBUTTON, IDM_WRD, (LPARAM)MAKELONG(TRUE, 0)); + else + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, + TB_CHECKBUTTON, IDM_WRD, (LPARAM)MAKELONG(FALSE, 0)); +} + +void MainWndUpdateSoundSpecButton(void) +{ +} + +void ShowSubWindow(HWND hwnd,int showflag) +{ + int i, num; + RECT rc,rc2; + int max = 0; + if(showflag){ + if(IsWindowVisible(hwnd)) + return; + for(i=0;SubWindowHistory[i].hwnd!=NULL;i++) + if(*(SubWindowHistory[i].hwnd)==hwnd) + num = i; + for(i=0;SubWindowHistory[i].hwnd!=NULL;i++) + if(*(SubWindowHistory[i].hwnd)!=hwnd){ + if(SubWindowHistory[i].status > 0) + SubWindowHistory[i].status += 1; + if(SubWindowHistory[i].status>SubWindowMax){ + if(SubWindowHistory[i].status>max){ + GetWindowRect(*(SubWindowHistory[i].hwnd), &rc); + max = SubWindowHistory[i].status; + } + ShowWindow(*(SubWindowHistory[i].hwnd),SW_HIDE); + SubWindowHistory[i].status = 0; + } + } + if(max>0){ + GetWindowRect(hwnd, &rc2); + MoveWindow(hwnd,rc.left,rc.top,rc2.right-rc2.left,rc2.bottom-rc2.top,TRUE); + } + ShowWindow(hwnd,SW_SHOW); + SubWindowHistory[num].status = 1; + } else { + if(!IsWindowVisible(hwnd)) + return; + for(i=0;SubWindowHistory[i].hwnd!=NULL;i++) + if(*(SubWindowHistory[i].hwnd)==hwnd) + num = i; + for(i=0;SubWindowHistory[i].hwnd!=NULL;i++) + if(i!=num) + if(SubWindowHistory[i].status>=SubWindowHistory[num].status) + SubWindowHistory[i].status -= 1; + ShowWindow(hwnd,SW_HIDE); + SubWindowHistory[num].status = 0; + } + MainWndUpdateConsoleButton(); + MainWndUpdateListButton(); + MainWndUpdateTracerButton(); + MainWndUpdateDocButton(); + MainWndUpdateWrdButton(); + MainWndUpdateSoundSpecButton(); +} + +void ToggleSubWindow(HWND hwnd) +{ + if(IsWindowVisible(hwnd)) + ShowSubWindow(hwnd,0); + else + ShowSubWindow(hwnd,1); +} + +void OnShow(void) +{ + SUBWINDOW *s = subwindow; + int i; + for(i=0;s[i].hwnd!=NULL;i++) + if(s[i].status & SWS_EXIST) { + if(s[i].status & SWS_HIDE) + ShowWindow(*(s[i].hwnd),SW_HIDE); + else + ShowWindow(*(s[i].hwnd),SW_SHOW); + } +} + +void OnHide(void) +{ + SUBWINDOW *s = subwindow; + int i; + for(i=0;s[i].hwnd!=NULL;i++){ + if(s[i].status & SWS_EXIST) + ShowWindow(*(s[i].hwnd),SW_HIDE); + } +} + +#ifdef W32GUI_DEBUG +void DebugThread(void *args) +{ + MSG msg; + DebugThreadExit = 0; + InitDebugWnd(NULL); + AttachThreadInput(GetWindowThreadProcessId(hDebugThread,NULL), + GetWindowThreadProcessId(hWindowThread,NULL),TRUE); + AttachThreadInput(GetWindowThreadProcessId(hWindowThread,NULL), + GetWindowThreadProcessId(hDebugThread,NULL),TRUE); + while( GetMessage(&msg,NULL,0,0) ){ + TranslateMessage(&msg); + DispatchMessage(&msg); + Sleep(0); + } + DebugThreadExit = 1; + crt_endthread(); +} + +void DebugThreadInit(void) +{ + DWORD dwThreadID; + if(!DebugThreadExit) + return; + hDebugThread = crt_beginthreadex(NULL,0,DebugThread,0,0,&dwThreadID); +} +#endif + + + + + +//----------------------------------------------------------------------------- +// Toolbar Main + +static TBBUTTON MainTbb[] = { + {4, IDM_STOP, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, + {3, IDM_PAUSE, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0}, + {0, IDM_PREV, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, + {1, IDM_BACKWARD, TBSTATE_ENABLED,TBSTYLE_BUTTON, 0, 0}, + {2, IDM_PLAY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, + {5, IDM_FOREWARD, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, + {6, IDM_NEXT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0} +}; + +static void InitMainToolbar(HWND hwnd) +{ + TBADDBITMAP MainTbab; + SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN, + TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); + SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN, + TB_SETBUTTONSIZE, (WPARAM)0, (LPARAM)MAKELONG(16,16)); + MainTbab.hInst = hInst; + MainTbab.nID =(int)IDB_BITMAP_MAIN_BUTTON; + SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN, + TB_ADDBITMAP, 7, (LPARAM)&MainTbab); + SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN, + TB_ADDBUTTONS, (WPARAM)7,(LPARAM)&MainTbb); + SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN, + TB_AUTOSIZE, 0, 0); +} + +//----------------------------------------------------------------------------- +// Toolbar SubWnd + +static TBBUTTON SubWndTbb[] = { + {3, IDM_CONSOLE, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0}, + {1, IDM_LIST, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0}, + {2, IDM_TRACER, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0}, + {0, IDM_DOC, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0}, + {4, IDM_WRD, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0}, +}; + +static void InitSubWndToolbar(HWND hwnd) +{ + TBADDBITMAP SubWndTbab; + SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND, + TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); + SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND, + TB_SETBUTTONSIZE, (WPARAM)0, (LPARAM)MAKELONG(16,16)); + SubWndTbab.hInst = hInst; + SubWndTbab.nID =(int)IDB_BITMAP_SUBWND_BUTTON; + SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND, + TB_ADDBITMAP, 5, (LPARAM)&SubWndTbab); + SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND, + TB_ADDBUTTONS, (WPARAM)5,(LPARAM)&SubWndTbb); + SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND, + TB_AUTOSIZE, 0, 0); +} + + + +//----------------------------------------------------------------------------- +// Canvas Window + +#define TM_CANVAS_XMAX 160 +#define TM_CANVAS_YMAX 160 +#define TM_CANVASMAP_XMAX 16 +#define TM_CANVASMAP_YMAX 16 +#define CANVAS_XMAX 160 +#define CANVAS_YMAX 160 +#define CMAP_XMAX 16 +#define CMAP_YMAX 16 +#define CK_MAX_CHANNELS 16 +#define CMAP_MODE_16 1 +#define CMAP_MODE_32 2 +#define CMAP_MAX_CHANNELS 32 +struct Canvas_ { + HWND hwnd; + HWND hParentWnd; + RECT rcMe; + int Mode; + HDC hdc; + HDC hmdc; + HGDIOBJ hgdiobj_hmdcprev; + int UpdateAll; + int PaintDone; + HANDLE hPopupMenu; + HANDLE hPopupMenuKeyboard; +// Sleep mode + RECT rcSleep; + HBITMAP hbitmap; + HBITMAP hBitmapSleep; + int SleepUpdateFlag; +// Map mode + RECT rcMap; + char MapMap[CMAP_MAX_CHANNELS][CMAP_YMAX]; + char MapMapOld[CMAP_MAX_CHANNELS][CMAP_YMAX]; + char MapBar[CMAP_MAX_CHANNELS]; + char MapBarOld[CMAP_MAX_CHANNELS]; + int MapDelay; + int MapResidual; + int MapUpdateFlag; + int MapMode; + int MapBarWidth; + int MapCh; + int MapPan[CMAP_MAX_CHANNELS]; + int MapPanOld[CMAP_MAX_CHANNELS]; + int MapSustain[CMAP_MAX_CHANNELS]; + int MapSustainOld[CMAP_MAX_CHANNELS]; + int MapExpression[CMAP_MAX_CHANNELS]; + int MapExpressionOld[CMAP_MAX_CHANNELS]; + int MapVolume[CMAP_MAX_CHANNELS]; + int MapVolumeOld[CMAP_MAX_CHANNELS]; + int MapPitchbend[CMAP_MAX_CHANNELS]; + int MapPitchbendOld[CMAP_MAX_CHANNELS]; + int MapChChanged; + ChannelBitMask DrumChannel; + RECT rcMapMap; + RECT rcMapSub; +// Keyboard mode + RECT rcKeyboard; + uint32 CKxnote[MAX_W32G_MIDI_CHANNELS][4]; + uint32 CKxnote_old[MAX_W32G_MIDI_CHANNELS][4]; + int CKNoteFrom; + int CKNoteTo; + int CKCh; + int CKPart; + int KeyboardUpdateFlag; + int xnote_reset; +// misc + Channel channel[MAX_W32G_MIDI_CHANNELS]; +} volatile Canvas; + +#define IDC_CANVAS 4242 + +static HWND hCanvasWnd; +static char CanvasWndClassName[] = "TiMidity Canvas"; +static LRESULT CALLBACK CanvasWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +static void CanvasPaintDo(void); + +#define IDM_CANVAS_SLEEP 2321 +#define IDM_CANVAS_MAP 2322 +#define IDM_CANVAS_KEYBOARD 2323 +#define IDM_CANVAS_REDRAW 2324 +#define IDM_CANVAS_MAP16 2325 +#define IDM_CANVAS_MAP32 2326 +#define IDM_CANVAS_KEYBOARD_A 2327 +#define IDM_CANVAS_KEYBOARD_B 2328 +#define IDM_CANVAS_KEYBOARD_C 2329 +static void InitCanvasWnd(HWND hwnd) +{ + WNDCLASS wndclass ; + hCanvasWnd = 0; + wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; + wndclass.lpfnWndProc = CanvasWndProc ; + wndclass.cbClsExtra = 0 ; + wndclass.cbWndExtra = 0 ; + wndclass.hInstance = hInst ; + wndclass.hIcon = NULL; + wndclass.hCursor = LoadCursor(0,IDC_ARROW) ; + wndclass.hbrBackground = (HBRUSH)(COLOR_SCROLLBAR + 1); + wndclass.lpszMenuName = NULL; + wndclass.lpszClassName = CanvasWndClassName; + RegisterClass(&wndclass); + hCanvasWnd = CreateWindowEx(0,CanvasWndClassName,0,WS_CHILD,CW_USEDEFAULT, + 0,CANVAS_XMAX,CANVAS_YMAX,GetDlgItem(hwnd,IDC_RECT_CANVAS),0,hInst,0); + CanvasInit(hCanvasWnd); + CanvasReset(); + CanvasClear(); + CanvasReadPanelInfo(1); + CanvasUpdate(1); + CanvasPaintAll(); + Canvas.hPopupMenuKeyboard = CreatePopupMenu(); + AppendMenu(Canvas.hPopupMenuKeyboard,MF_STRING,IDM_CANVAS_KEYBOARD_A,"A Part"); + AppendMenu(Canvas.hPopupMenuKeyboard,MF_STRING,IDM_CANVAS_KEYBOARD_B,"B Part"); + Canvas.hPopupMenu = CreatePopupMenu(); + AppendMenu(Canvas.hPopupMenu,MF_STRING,IDM_CANVAS_SLEEP,"Sleep Mode"); + AppendMenu(Canvas.hPopupMenu,MF_STRING,IDM_CANVAS_MAP16,"Map16 Mode"); + AppendMenu(Canvas.hPopupMenu,MF_STRING,IDM_CANVAS_MAP32,"Map32 Mode"); +// AppendMenu(Canvas.hPopupMenu,MF_STRING,IDM_CANVAS_KEYBOARD,"Keyboard Mode"); + AppendMenu(Canvas.hPopupMenu,MF_POPUP,(UINT)Canvas.hPopupMenuKeyboard,"Keyboard Mode"); + AppendMenu(Canvas.hPopupMenu,MF_SEPARATOR,0,0); + AppendMenu(Canvas.hPopupMenu,MF_STRING,IDM_CANVAS_REDRAW,"Redraw"); + ShowWindow(hCanvasWnd,SW_SHOW); + UpdateWindow(hCanvasWnd); +} + +static LRESULT CALLBACK +CanvasWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + switch (uMess) + { + case WM_CREATE: + break; + case WM_PAINT: + CanvasPaintDo(); + return 0; + case WM_LBUTTONDBLCLK: + w32g_send_rc(RC_EXT_MODE_CHANGE, 0); + break; + case WM_RBUTTONDOWN: + { + RECT rc; + GetWindowRect(Canvas.hwnd,(RECT *)&rc); + TrackPopupMenu(Canvas.hPopupMenu,TPM_TOPALIGN|TPM_LEFTALIGN, + rc.left+(int)LOWORD(lParam),rc.top+(int)HIWORD(lParam), + 0,Canvas.hwnd,NULL); + } + break; + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDM_CANVAS_SLEEP: + CanvasChange(CANVAS_MODE_SLEEP); + break; + case IDM_CANVAS_MAP16: + Canvas.MapMode = CMAP_MODE_16; + CanvasChange(CANVAS_MODE_MAP); + break; + case IDM_CANVAS_MAP32: + Canvas.MapMode = CMAP_MODE_32; + CanvasChange(CANVAS_MODE_MAP); + break; + case IDM_CANVAS_KEYBOARD: + CanvasChange(CANVAS_MODE_KEYBOARD); + break; + case IDM_CANVAS_KEYBOARD_A: + Canvas.CKPart = 1; + CanvasChange(CANVAS_MODE_KEYBOARD); + break; + case IDM_CANVAS_KEYBOARD_B: + Canvas.CKPart = 2; + CanvasChange(CANVAS_MODE_KEYBOARD); + break; + case IDM_CANVAS_REDRAW: +// PanelResetPart(PANELRESET_CHANNEL); + CanvasReset(); + CanvasClear(); + CanvasReadPanelInfo(1); + CanvasUpdate(1); + CanvasPaintAll(); + break; + } + break; + default: + return DefWindowProc(hwnd,uMess,wParam,lParam) ; + } + return 0L; +} + +// Color +#define CCR_FORE RGB(0x00,0x00,0x00) +#define CCR_BACK RGB(0x00,0xf0,0x00) +#define CCR_DFORE RGB(0x70,0x00,0x00) +#define CCR_DBACK RGB(0x00,0xf0,0x00) +#define CCR_LOW RGB(0x80,0xd0,0x00) +#define CCR_MIDDLE RGB(0xb0,0xb0,0x00) +#define CCR_HIGH RGB(0xe0,0x00,0x00) +// F m : n +static COLORREF HalfColorMN(COLORREF fc, COLORREF bc, int m, int n) +{ + return fc*m/(m+n) + bc*n/(m+n); +} +static COLORREF HalfColor23(COLORREF fc, COLORREF bc) +{ + return HalfColorMN(fc,bc,2,3); +} +static COLORREF HalfColor15(COLORREF fc, COLORREF bc) +{ + return HalfColorMN(fc,bc,1,5); +} +#define CC_BACK 0 +#define CC_FORE 1 +#define CC_LOW 2 +#define CC_MIDDLE 3 +#define CC_HIGH 4 +#define CC_FORE_HALF 11 +#define CC_LOW_HALF 12 +#define CC_MIDDLE_HALF 13 +#define CC_HIGH_HALF 14 +#define CC_FORE_WEAKHALF 15 +#define CC_DBACK 21 +#define CC_DFORE 22 +#define CC_DFORE_HALF 23 +#define CC_DFORE_WEAKHALF 24 +static COLORREF CanvasColor(int c) +{ + switch(c){ + case CC_BACK: + return CCR_BACK; + case CC_FORE: + return CCR_FORE; + case CC_FORE_HALF: + return HalfColor15(CCR_FORE,CCR_BACK); + case CC_FORE_WEAKHALF: + return HalfColor23(CCR_FORE,CCR_BACK); + case CC_DBACK: + return CCR_DBACK; + case CC_DFORE: + return CCR_DFORE; + case CC_DFORE_HALF: + return HalfColor15(CCR_DFORE,CCR_DBACK); + case CC_DFORE_WEAKHALF: + return HalfColor23(CCR_DFORE,CCR_DBACK); + case CC_LOW: + return CCR_LOW; + case CC_MIDDLE: + return CCR_MIDDLE; + case CC_HIGH: + return CCR_HIGH; + case CC_LOW_HALF: + return HalfColor23(CCR_LOW,CCR_BACK); + case CC_MIDDLE_HALF: + return HalfColor23(CCR_MIDDLE,CCR_BACK); + case CC_HIGH_HALF: + return HalfColor23(CCR_HIGH,CCR_BACK); + default: + return CCR_BACK; + } +} + +static int CanvasOK = 0; +static void CanvasInit(HWND hwnd) +{ + RECT rc; + Canvas.hwnd = hwnd; + Canvas.hParentWnd = GetParent(Canvas.hwnd); + GetClientRect(Canvas.hParentWnd,&rc); + MoveWindow(Canvas.hwnd,0,0,rc.right-rc.left,rc.bottom-rc.top,FALSE); + GetClientRect(Canvas.hwnd,(RECT *)&(Canvas.rcMe)); + Canvas.hdc = GetDC(Canvas.hwnd); + Canvas.hbitmap = CreateCompatibleBitmap(Canvas.hdc,CANVAS_XMAX,CANVAS_YMAX); + Canvas.hmdc = CreateCompatibleDC(Canvas.hdc); + ReleaseDC(Canvas.hwnd,Canvas.hdc); + Canvas.hBitmapSleep = LoadBitmap(hInst,MAKEINTRESOURCE(IDB_BITMAP_SLEEP)); + Canvas.hgdiobj_hmdcprev = SelectObject(Canvas.hmdc,Canvas.hbitmap); + + SetRect((RECT *)&(Canvas.rcSleep),0,0,96,64); + SetRect((RECT *)&(Canvas.rcMap),3,2+2,0,0); + SetRect((RECT *)&(Canvas.rcKeyboard),1,1,0,0); + Canvas.rcMapMap.left = Canvas.rcMap.left; + Canvas.rcMapMap.top = Canvas.rcMap.top; + Canvas.rcMapMap.right = Canvas.rcMapMap.left + 6*16 - 1; + Canvas.rcMapMap.bottom = Canvas.rcMapMap.top + 3*16 - 1; + Canvas.rcMapSub.left = Canvas.rcMapMap.left; + Canvas.rcMapSub.top = Canvas.rcMapMap.bottom + 2; + Canvas.rcMapSub.right = Canvas.rcMapSub.left + 6*16 - 1; + Canvas.rcMapSub.bottom = Canvas.rcMapSub.top +4+3+3+3+4 - 1; + Canvas.MapDelay = 1; + Canvas.MapResidual = 0; + Canvas.MapMode = CMAP_MODE_16; +// Canvas.MapMode = CMAP_MODE_32; +// Canvas.CKNoteFrom = 24; +// Canvas.CKNoteTo = 24 + 96; + Canvas.CKNoteFrom = 12; + Canvas.CKNoteTo = Canvas.CKNoteFrom + 96 + 3; + Canvas.CKCh = 16; + Canvas.CKPart = 1; + Canvas.UpdateAll = 0; + Canvas.Mode = CANVAS_MODE_SLEEP; + Canvas.PaintDone = 0; + CanvasReset(); + CanvasOK = 1; +} + +// Canvas Map + +static void CanvasMapClear(void) +{ + HPEN hPen; + HBRUSH hBrush; + HGDIOBJ hgdiobj_hpen, hgdiobj_hbrush; + if(!CanvasOK) + return; + hPen = CreatePen(PS_SOLID,1,CanvasColor(CC_BACK)); + hBrush = CreateSolidBrush(CanvasColor(CC_BACK)); + hgdiobj_hpen = SelectObject(Canvas.hmdc, hPen); + hgdiobj_hbrush = SelectObject(Canvas.hmdc, hBrush); + Rectangle(Canvas.hmdc, + Canvas.rcMe.left,Canvas.rcMe.top,Canvas.rcMe.right,Canvas.rcMe.bottom); + SelectObject(Canvas.hmdc, hgdiobj_hpen); + DeleteObject(hPen); + SelectObject(Canvas.hmdc, hgdiobj_hbrush); + DeleteObject(hBrush); + InvalidateRect(hCanvasWnd, NULL, FALSE); +} + +static void CanvasMapReset(void) +{ + int i,j,ch; + if(!CanvasOK) + return; + switch(Canvas.MapMode){ + case CMAP_MODE_32: + Canvas.MapCh = 32; + Canvas.MapBarWidth = 2; + break; + default: + case CMAP_MODE_16: + Canvas.MapCh = 16; + Canvas.MapBarWidth = 5; + break; + } + for(i=0;ichanged && !flag) + return; + // Bar + Canvas.DrumChannel = drumchannels; + for(ch=0;chv_flags[ch] == FLAG_NOTE_ON) + v = Panel->ctotal[ch]/8; + else + v = 0; + if(v<0) v = 0; else if(v>CMAP_YMAX-1) v = CMAP_YMAX-1; +#if 0 // U + if(v == Canvas.MapBar[ch]){ + v = v * (rand()%7 + 7) / 10; + if(v<0) + v = 0; + } + { +#else + if(v != Canvas.MapBar[ch]){ +#endif + // x + if(Canvas.MapDelay){ + int old = Canvas.MapBar[ch]; + if(Canvas.MapBar[ch]<0) + Canvas.MapBar[ch] = v; + else + Canvas.MapBar[ch] = (old*10*1/3 + v*10*2/3)/10; + if(old == Canvas.MapBar[ch]){ + if(v>old) + Canvas.MapBar[ch] = old + 1; + else if(vchannel[ch].panning==NO_PANNING) + Canvas.MapPan[ch] = -1; + else { + Canvas.MapPan[ch] = (Panel->channel[ch].panning - 64) * 3 /128; + Canvas.MapPan[ch] = SetValue(Canvas.MapPan[ch],-2,2) + 2; + } + if(Panel->channel[ch].sustain) + Canvas.MapSustain[ch] = 5; + else + Canvas.MapSustain[ch] = 0; + //Canvas.MapSustain[ch] = SetValue(Canvas.MapSustain[ch],0,10); + Canvas.MapExpression[ch] = (Panel->channel[ch].expression * 11) >>8; + Canvas.MapExpression[ch] = SetValue(Canvas.MapExpression[ch],0,10); + Canvas.MapVolume[ch] = (Panel->channel[ch].volume * 11) >>8; + Canvas.MapVolume[ch] = SetValue(Canvas.MapVolume[ch],0,10); + Canvas.MapPitchbend[ch] = Panel->channel[ch].pitchbend; + if(Canvas.MapPanOld[ch]!=Canvas.MapPan[ch]) changed = 1; + if(Canvas.MapSustainOld[ch]!=Canvas.MapSustain[ch]) changed = 1; + if(Canvas.MapExpressionOld[ch]!=Canvas.MapExpression[ch]) changed = 1; + if(Canvas.MapVolumeOld[ch]!=Canvas.MapVolume[ch]) changed = 1; + if(Canvas.MapPitchbendOld[ch]!=Canvas.MapPitchbend[ch]) changed = 1; + if(changed) + Canvas.MapChChanged |= 1 << ch; + } + } +} + +static void CanvasMapDrawMapBar(int flag) +{ + int i,ch; + + if(!CanvasOK) + return; + if(Canvas.UpdateAll) + flag = 1; + if(!Canvas.MapResidual && !flag) + return; + Canvas.MapResidual = 0; + for(ch=0;chchanged){ + int ch; + for(ch=0;ch=0){ + x = rc.left + Canvas.MapPan[ch]; + for(y=rc.top;y<=rc.bottom;y++) + SetPixelV(Canvas.hmdc,x,y,colorFG); + } + // SUSTAIN + rc.top = rc.bottom + 2; + rc.bottom = rc.top + 2 - 1; + if(Canvas.MapSustain[ch]) + for(x=rc.left;x<=rc.right;x++) + for(y=rc.top;y<=rc.bottom;y++) + SetPixelV(Canvas.hmdc,x,y,colorFG); + else + for(x=rc.left;x<=rc.right;x++) + for(y=rc.top;y<=rc.bottom;y++) + SetPixelV(Canvas.hmdc,x,y,colorBG); + // EXPRESSION + rc.top = rc.bottom + 2; + rc.bottom = rc.top + 2 - 1; + for(i=1;i<=10;i++){ + if(x-rc.left < Canvas.MapExpression[ch]) + color = colorFG; + else + color = colorBG; + x = rc.left + i/2; + y = rc.top + 1 - i%2; + SetPixelV(Canvas.hmdc,x,y,color); + } + // VOLUME + rc.top = rc.bottom + 2; + rc.bottom = rc.top + 2 - 1; + for(i=1;i<=10;i++){ + if(x-rc.left < Canvas.MapVolume[ch]) + color = colorFG; + else + color = colorBG; + x = rc.left + i/2; + y = rc.top + 1 - i%2; + SetPixelV(Canvas.hmdc,x,y,color); + } + // PITCH_BEND + rc.top = rc.bottom + 2; + rc.bottom = rc.top + 3 - 1; + for(x=rc.left;x<=rc.right;x++) + for(y=rc.top;y<=rc.bottom;y++) + SetPixelV(Canvas.hmdc,x,y,colorBG); + if(Canvas.MapPitchbend[ch]==-2){ + y = rc.top + 1; + for(x=rc.left;x<=rc.right;x++) + SetPixelV(Canvas.hmdc,x,y,colorFG); + y++; + for(x=rc.left;x<=rc.right;x++) + SetPixelV(Canvas.hmdc,x,y,colorFG); + } else if(Canvas.MapPitchbend[ch]>0x2000){ + y = rc.top; + for(x=rc.left;x<=rc.left;x++) + SetPixelV(Canvas.hmdc,x,y,colorFG); + y++; + for(x=rc.left;x<=rc.left+2;x++) + SetPixelV(Canvas.hmdc,x,y,colorFG); + y++; + for(x=rc.left;x<=rc.left+4;x++) + SetPixelV(Canvas.hmdc,x,y,colorFG); + } else if(Canvas.MapPitchbend[ch]<0x2000){ + y = rc.top; + for(x=rc.right;x<=rc.right;x++) + SetPixelV(Canvas.hmdc,x,y,colorFG); + y++; + for(x=rc.right-2;x<=rc.right;x++) + SetPixelV(Canvas.hmdc,x,y,colorFG); + y++; + for(x=rc.right-4;x<=rc.right;x++) + SetPixelV(Canvas.hmdc,x,y,colorFG); + } + } + InvalidateRect(hCanvasWnd,(RECT *)&(Canvas.rcMapSub),FALSE); + } + if(!Canvas.MapResidual && !flag) + return; + change_flag = 0; + for(i=0;ichanged && !flag) + return; + for(i=ChFrom;i<=ChTo;i++) + for(j=0;j<4;j++){ + Canvas.CKxnote_old[i][j] = Canvas.CKxnote[i][j]; + Canvas.CKxnote[i][j] = Panel->xnote[i][j]; + } +} + +#define CK_KEY_BLACK 1 +#define CK_KEY_WHITE 2 +#define CK_ON RGB(0xff,0x00,0x00) +#define CK_OFF_WHITE RGB(0xff,0xff,0xff) +#define CK_OFF_BLACK RGB(0x00,0x00,0x00) +#define CK_DOFF_WHITE RGB(0xcc,0xcc,0xcc) +#define CK_DOFF_BLACK RGB(0x00,0x00,0x00) +static void CanvasKeyboardUpdate(int flag) +{ + int j,k,l; + int channel; + int ChFrom, ChTo; + + if(!PInfoOK) + return; + if(Canvas.UpdateAll) + flag = 1; + if(Canvas.DrumChannel!=drumchannels) + flag = 1; + if(!Panel->changed && !flag) + return; + ChFrom = (Canvas.CKPart - 1) * Canvas.CKCh; + ChTo = Canvas.CKPart * Canvas.CKCh - 1; + for(channel=ChFrom;channel<=ChTo;channel++){ + int change_flag = 0; + int drumflag = IS_SET_CHANNELMASK(drumchannels,channel); + COLORREF colorON, colorOFF_WHITE, colorOFF_BLACK; + if(drumflag){ + colorON = CK_ON; + colorOFF_WHITE = CK_DOFF_WHITE; + colorOFF_BLACK = CK_OFF_BLACK; + } else { + colorON = CK_ON; + colorOFF_WHITE = CK_OFF_WHITE; + colorOFF_BLACK = CK_OFF_BLACK; + } + for(j=0;j<4;j++){ + int32 xnote, xnote_diff; + xnote = Canvas.CKxnote[channel][j]; + xnote_diff = Canvas.CKxnote[channel][j] ^ Canvas.CKxnote_old[channel][j]; + if(!flag && xnote_diff == 0) + continue; + for(k=0;k<32;k++){ + int key = 0; + int KeyOn = 0; + int note = j*32+k; + int reff = (int32)1 << k; + int x,y; + if(note < Canvas.CKNoteFrom || note > Canvas.CKNoteTo) + continue; + if(!flag && !(xnote_diff & reff)) + continue; + if(xnote & reff) + KeyOn = 1; + note = note % 12; + if(note == 1 || note == 3 || note == 6 || note == 8 || note == 10) + key = CK_KEY_BLACK; + else + key = CK_KEY_WHITE; + x = Canvas.rcKeyboard.left + j * 32 + k - Canvas.CKNoteFrom; + y = Canvas.rcKeyboard.top + (channel - ChFrom) * 4; + switch(key){ + case CK_KEY_BLACK: + if(KeyOn){ + for(l=0;l<2;l++) + SetPixelV(Canvas.hmdc,x,y+l,colorON); + SetPixelV(Canvas.hmdc,x,y+2,colorOFF_WHITE); + } else { + for(l=0;l<2;l++) + SetPixelV(Canvas.hmdc,x,y+l,colorOFF_BLACK); + SetPixelV(Canvas.hmdc,x,y+2,colorOFF_WHITE); + } + break; + case CK_KEY_WHITE: + if(KeyOn){ + SetPixelV(Canvas.hmdc,x,y,colorOFF_WHITE); + for(l=1;l<3;l++) + SetPixelV(Canvas.hmdc,x,y+l,colorON); + } else { + SetPixelV(Canvas.hmdc,x,y,colorOFF_WHITE); + for(l=1;l<3;l++) + SetPixelV(Canvas.hmdc,x,y+l,colorOFF_WHITE); + } + break; + default: + break; + } + change_flag = 1; + } + } + if(change_flag){ + RECT rc; + GetClientRect(Canvas.hwnd,&rc); + rc.top = Canvas.rcKeyboard.top + (channel - ChFrom) * 4; + rc.bottom = rc.top + 4; + InvalidateRect(Canvas.hwnd, &rc, FALSE); + } + } + if(flag) + InvalidateRect(hCanvasWnd, NULL, FALSE); + Canvas.DrumChannel = drumchannels; +} + +static void CanvasKeyboardClear(void) +{ + int i; + HPEN hPen; + HBRUSH hBrush; + HGDIOBJ hgdiobj_hpen, hgdiobj_hbrush; + COLORREF FGcolor, BGcolor; + HFONT hfont; + HGDIOBJ hgdiobj; + RECT rc; + char buffer[16]; + if(!CanvasOK) + return; +#if 0 + hPen = CreatePen(PS_SOLID,1,CanvasColor(CC_BACK)); + hBrush = CreateSolidBrush(CanvasColor(CC_BACK)); +#else + FGcolor = RGB(0xff,0xff,0xff); + BGcolor = RGB(0x00,0x00,0x00); + hPen = CreatePen(PS_SOLID,1,BGcolor); + hBrush = CreateSolidBrush(BGcolor); +#endif + hgdiobj_hpen = SelectObject(Canvas.hmdc, hPen); + hgdiobj_hbrush = SelectObject(Canvas.hmdc, hBrush); + Rectangle(Canvas.hmdc, + Canvas.rcMe.left,Canvas.rcMe.top,Canvas.rcMe.right,Canvas.rcMe.bottom); + SelectObject(Canvas.hmdc, hgdiobj_hpen); + DeleteObject(hPen); + SelectObject(Canvas.hmdc, hgdiobj_hbrush); + DeleteObject(hBrush); + + hfont = CreateFont(7,7,0,0,FW_DONTCARE,FALSE,FALSE,FALSE, + DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, + DEFAULT_PITCH | FF_DONTCARE,"Arial Bold"); + hgdiobj = SelectObject(Canvas.hmdc,hfont); + SetTextAlign(Canvas.hmdc, TA_LEFT | TA_TOP | TA_NOUPDATECP); + rc.left = Canvas.rcMe.left+1 ; + rc.top = Canvas.rcMe.bottom-7; + rc.right = Canvas.rcMe.left+1 + 40; + rc.bottom = Canvas.rcMe.bottom; + SetTextColor(Canvas.hmdc,RGB(0xff,0xff,0xff)); + SetBkColor(Canvas.hmdc,RGB(0x00,0x00,0x00)); + strcpy(buffer,"Part"); + ExtTextOut(Canvas.hmdc,rc.left,rc.top,ETO_CLIPPED|ETO_OPAQUE,&rc, + buffer,strlen(buffer),NULL); + for(i=1;i<=3;i++){ + if(i==Canvas.CKPart){ + SetTextColor(Canvas.hmdc,RGB(0xff,0xff,0xff)); + SetBkColor(Canvas.hmdc,RGB(0x00,0x00,0x00)); + } else { + SetTextColor(Canvas.hmdc,RGB(0x80,0x80,0x80)); + SetBkColor(Canvas.hmdc,RGB(0x00,0x00,0x00)); + } + rc.left = Canvas.rcMe.left+1 + 40 + (i-1)*13; + rc.top = Canvas.rcMe.bottom-7; + rc.right = Canvas.rcMe.left+1 + 40 + (i)*13 - 1; + rc.bottom = Canvas.rcMe.bottom; + sprintf(buffer,"%c",i+'A'-1); + ExtTextOut(Canvas.hmdc,rc.left,rc.top,ETO_CLIPPED|ETO_OPAQUE,&rc, + buffer,strlen(buffer),NULL); + } + if((HGDIOBJ)hgdiobj!=(HGDIOBJ)NULL && (HGDIOBJ)hgdiobj!=(HGDIOBJ)GDI_ERROR) + SelectObject(Canvas.hmdc,hgdiobj); + DeleteObject(hfont); + + CanvasKeyboardReset(); + CanvasKeyboardReadPanelInfo(1); + CanvasKeyboardUpdate(1); + InvalidateRect(hCanvasWnd, NULL, FALSE); +} + +// Canvas All + +static void CanvasPaintDo(void) +{ + PAINTSTRUCT ps; + RECT rc; + Canvas.hdc = BeginPaint(Canvas.hwnd, &ps); + GetClientRect(Canvas.hwnd, &rc); + BitBlt(Canvas.hdc,rc.left,rc.top,rc.right,rc.bottom,Canvas.hmdc,0,0,SRCCOPY); + EndPaint(Canvas.hwnd, &ps); +} +void CanvasPaint(void) +{ + Canvas.PaintDone = 0; + UpdateWindow(hCanvasWnd); +} +void CanvasPaintAll(void) +{ + InvalidateRect(hCanvasWnd, NULL, FALSE); + CanvasPaint(); +} + +void CanvasReset(void) +{ + if(!CanvasOK) + return; + switch(Canvas.Mode){ + case CANVAS_MODE_MAP: + CanvasMapReset(); + break; + case CANVAS_MODE_KEYBOARD: + CanvasKeyboardReset(); + break; + default: + case CANVAS_MODE_SLEEP: + CanvasSleepReset(); + break; + } +} + +void CanvasClear(void) +{ + if(!CanvasOK) + return; + switch(Canvas.Mode){ + case CANVAS_MODE_MAP: + CanvasMapClear(); + break; + case CANVAS_MODE_KEYBOARD: + CanvasKeyboardClear(); + break; + default: + case CANVAS_MODE_SLEEP: + CanvasSleepClear(); + break; + } +} + +void CanvasUpdate(int flag) +{ + if(!CanvasOK) + return; + switch(Canvas.Mode){ + case CANVAS_MODE_MAP: + CanvasMapUpdate(flag); + break; + case CANVAS_MODE_KEYBOARD: + CanvasKeyboardUpdate(flag); + break; + default: + case CANVAS_MODE_SLEEP: + CanvasSleepUpdate(flag); + break; + } +} + +void CanvasReadPanelInfo(int flag) +{ + if(!CanvasOK) + return; + switch(Canvas.Mode){ + case CANVAS_MODE_MAP: + CanvasMapReadPanelInfo(flag); + break; + case CANVAS_MODE_KEYBOARD: + CanvasKeyboardReadPanelInfo(flag); + break; + default: + case CANVAS_MODE_SLEEP: +// CanvasSleepReadPanelInfo(flag); + break; + } +} + +void CanvasChange(int mode) +{ + if(mode!=0) + Canvas.Mode = mode; + else { + if(Canvas.Mode==CANVAS_MODE_SLEEP) + Canvas.Mode = CANVAS_MODE_MAP; + else if(Canvas.Mode==CANVAS_MODE_MAP) + Canvas.Mode = CANVAS_MODE_KEYBOARD; + else if(Canvas.Mode==CANVAS_MODE_KEYBOARD) + Canvas.Mode = CANVAS_MODE_SLEEP; + else + Canvas.Mode = CANVAS_MODE_SLEEP; + } + CanvasReset(); + CanvasClear(); + CanvasReadPanelInfo(1); + CanvasUpdate(1); + CanvasPaintAll(); +} + +int CanvasGetMode(void) +{ + return Canvas.Mode; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//----------------------------------------------------------------------------- +// Main Panel +// CplEChEA +// +// +// +// +// +// +// + +#define MPANEL_XMAX 440 +#define MPANEL_YMAX 88 + +// update flag. +#define MP_UPDATE_ALL 0xffffL +#define MP_UPDATE_NONE 0x0000L +#define MP_UPDATE_TITLE 0x0001L +#define MP_UPDATE_FILE 0x0002L +#define MP_UPDATE_TIME 0x0004L +#define MP_UPDATE_VOICES 0x0010L +#define MP_UPDATE_MVOLUME 0x0020L +#define MP_UPDATE_RATE 0x0040L +#define MP_UPDATE_PLAYLIST 0x0080L +#define MP_UPDATE_MISC 0x0200L +#define MP_UPDATE_MESSAGE 0x0400L +#define MP_UPDATE_BACKGROUND 0x0800L + +#define MP_TITLE_MAX 256 +#define MP_FILE_MAX 256 +struct MPanel_ { + HWND hwnd; + HWND hParentWnd; + HDC hdc; + HDC hmdc; + HGDIOBJ hgdiobj_hmdcprev; + HBITMAP hbitmap; + HBITMAP hbitmapBG; /* the background bitmap */ + HBITMAP hbitmapBGFilter; /* the background bitmap filter */ + HFONT hfont; + char Font[256]; + char FontLang[256]; + RECT rcMe; + RECT rcTitle; + RECT rcFile; + RECT rcTime; + RECT rcVoices; + RECT rcMVolume; + RECT rcRate; + RECT rcList; + RECT rcMisc; + RECT rcMessage; + char Title[MP_TITLE_MAX+1]; + char File[MP_FILE_MAX+1]; + int CurTime_h; int CurTime_m; int CurTime_s; int CurTime_ss; + int TotalTime_h; int TotalTime_m; int TotalTime_s; int TotalTime_ss; + int CurVoices; + int MaxVoices; + int MVolume; + int Rate; + int PlaylistNum; + int PlaylistMax; + HFONT hFontTitle; + HFONT hFontFile; + HFONT hFontTime; + HFONT hFontVoices; + HFONT hFontMVolume; + HFONT hFontRate; + HFONT hFontList; + HFONT hFontMisc; + HFONT hFontMessage; + long UpdateFlag; + COLORREF FGColor; + COLORREF BGColor; + enum play_system_modes play_system_mode; + int current_file_info_file_type; + int current_file_info_max_channel; +} MPanel; +extern volatile int MPanelOK; + + + +static HWND hPanelWnd; +static char PanelWndClassName[] = "TiMidity Main Panel"; +static LRESULT CALLBACK PanelWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +int MPanelMode = 0; + +static void InitPanelWnd(HWND hwnd) +{ + WNDCLASS wndclass ; + hPanelWnd = 0; + wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; + wndclass.lpfnWndProc = PanelWndProc ; + wndclass.cbClsExtra = 0 ; + wndclass.cbWndExtra = 0 ; + wndclass.hInstance = hInst ; + wndclass.hIcon = NULL; + wndclass.hCursor = LoadCursor(0,IDC_ARROW) ; + wndclass.hbrBackground = (HBRUSH)(COLOR_SCROLLBAR + 1); + wndclass.lpszMenuName = NULL; + wndclass.lpszClassName = PanelWndClassName; + RegisterClass(&wndclass); + hPanelWnd = + CreateWindowEx(0,PanelWndClassName,0,WS_CHILD, + CW_USEDEFAULT,0,MPANEL_XMAX,MPANEL_YMAX, + GetDlgItem(hwnd,IDC_RECT_PANEL),0,hInst,0); + MPanelInit(hPanelWnd); + MPanelReset(); + MPanelReadPanelInfo(1); + MPanelUpdateAll(); + MPanelPaintAll(); + UpdateWindow(hPanelWnd); + ShowWindow(hPanelWnd,SW_SHOW); +} + +static void MPanelPaintDo(void); +static LRESULT CALLBACK +PanelWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + switch (uMess) + { + case WM_CREATE: + break; + case WM_PAINT: + MPanelPaintDo(); + return 0; + case WM_LBUTTONDBLCLK: + MPanelReset(); + MPanelReadPanelInfo(1); + MPanelUpdateAll(); + MPanelPaintAll(); + break; + default: + return DefWindowProc(hwnd,uMess,wParam,lParam) ; + } + return 0L; +} + +// Initialization of MPanel strucuter at once. +volatile int MPanelOK = 0; +static void MPanelInit(HWND hwnd) +{ + RECT rc; + MPanel.hwnd = hwnd; + MPanel.hParentWnd = GetParent(MPanel.hwnd); + GetClientRect(MPanel.hParentWnd,&rc); + MoveWindow(MPanel.hwnd,0,0,rc.right-rc.left,rc.bottom-rc.top,FALSE); + MPanel.hdc = GetDC(MPanel.hwnd); + MPanel.hbitmap = + CreateCompatibleBitmap(MPanel.hdc,MPANEL_XMAX,MPANEL_YMAX); + MPanel.hmdc = + CreateCompatibleDC(MPanel.hdc); + MPanel.hgdiobj_hmdcprev = SelectObject(MPanel.hmdc,MPanel.hbitmap); + ReleaseDC(MPanel.hwnd,MPanel.hdc); + + GetClientRect(MPanel.hwnd,&rc); + // RECT reft,top,right,bottom + SetRect(&(MPanel.rcMe),rc.left,rc.top,rc.right,rc.bottom); + rc = MPanel.rcMe; + SetRect(&(MPanel.rcTitle), rc.left+2, rc.top+2, rc.right-2, rc.top+2+14); + SetRect(&(MPanel.rcFile), rc.left+2, rc.top+2+14+1, rc.right-2, rc.top+2+14+1+12); + SetRect(&(MPanel.rcTime), rc.left+2, rc.top+2+14+1+12+1, rc.left+2+180, rc.top+2+14+1+12+1+25); + SetRect(&(MPanel.rcVoices), rc.right-2-36-1-24-48, rc.top+2+14+1+12+1, rc.right-2-36-1-24, rc.top+2+14+1+12+1+12); + SetRect(&(MPanel.rcMVolume),rc.right-2-36, rc.top+2+14+1+12+1, rc.right-2, rc.top+2+14+1+12+1+12); + SetRect(&(MPanel.rcRate), rc.right-2-60-1-18-48, rc.top+2+14+1+12+1+12+1, rc.right-2-60-1-18, rc.top+2+14+1+12+1+12+1+12); + SetRect(&(MPanel.rcList), rc.right-2-60, rc.top+2+14+1+12+1+12+1, rc.right-2, rc.top+2+14+1+12+1+12+1+12); + SetRect(&(MPanel.rcMisc), rc.left+2, rc.top+2+14+1+12+1+25+1,rc.right-2,rc.top+2+14+1+12+1+25+1+12); + SetRect(&(MPanel.rcMessage),rc.left,rc.top,rc.right,rc.bottom); + MPanel.hFontTitle = NULL; + MPanel.hFontFile = NULL; + MPanel.hFontTime = NULL; + MPanel.hFontVoices = NULL; + MPanel.hFontMVolume = NULL; + MPanel.hFontRate = NULL; + MPanel.hFontList = NULL; +// strcpy(MPanel.Font,"Times New Roman"); + strcpy(MPanel.Font,"Arial Bold"); + switch(PlayerLanguage){ + case LANGUAGE_ENGLISH: + strcpy(MPanel.FontLang,"Times New Roman"); + break; + default: + case LANGUAGE_JAPANESE: + strcpy(MPanel.FontLang,"lr o"); + break; + } + rc = MPanel.rcTitle; + MPanel.hFontTitle = + CreateFont(rc.bottom-rc.top,0,0,0,FW_DONTCARE,FALSE,FALSE,FALSE, + DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, + DEFAULT_PITCH | FF_DONTCARE,MPanel.FontLang); + rc = MPanel.rcFile; + MPanel.hFontFile = + CreateFont(rc.bottom-rc.top,0,0,0,FW_DONTCARE,FALSE,FALSE,FALSE, + DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, + DEFAULT_PITCH | FF_DONTCARE,MPanel.FontLang); + rc = MPanel.rcTime; + MPanel.hFontTime = + CreateFont(24,0,0,0,FW_DONTCARE,FALSE,FALSE,FALSE, + DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, + DEFAULT_PITCH | FF_DONTCARE,MPanel.Font); + rc = MPanel.rcVoices; + MPanel.hFontVoices = + CreateFont(rc.bottom-rc.top,0,0,0,FW_DONTCARE,FALSE,FALSE,FALSE, + DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, + DEFAULT_PITCH | FF_DONTCARE,MPanel.Font); + rc = MPanel.rcMVolume; + MPanel.hFontMVolume = + CreateFont(rc.bottom-rc.top,0,0,0,FW_DONTCARE,FALSE,FALSE,FALSE, + DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, + DEFAULT_PITCH | FF_DONTCARE,MPanel.Font); + rc = MPanel.rcRate; + MPanel.hFontRate = + CreateFont(rc.bottom-rc.top,0,0,0,FW_DONTCARE,FALSE,FALSE,FALSE, + DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, + DEFAULT_PITCH | FF_DONTCARE,MPanel.Font); + rc = MPanel.rcList; + MPanel.hFontList = + CreateFont(rc.bottom-rc.top,0,0,0,FW_DONTCARE,FALSE,FALSE,FALSE, + DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, + DEFAULT_PITCH | FF_DONTCARE,MPanel.Font); + rc = MPanel.rcMisc; + MPanel.hFontMisc = +#if 0 + CreateFont(rc.bottom-rc.top,0,0,0,FW_DONTCARE,FALSE,FALSE,FALSE, + DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, + DEFAULT_PITCH | FF_DONTCARE,MPanel.Font); +#else + CreateFont(rc.bottom-rc.top,(rc.bottom-rc.top)/2,0,0,FW_DONTCARE,FALSE,FALSE,FALSE, + DEFAULT_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY, + FIXED_PITCH | FF_DONTCARE,MPanel.Font); +#endif + MPanelOK = 1; +} + +// pl\ZbgB +void MPanelReset(void) +{ + if(!MPanelOK) + return; + MPanel.Title[0] = '\0'; + MPanel.File[0] = '\0'; + strcpy(MPanel.Title,"No title."); + strcpy(MPanel.File,"No file."); + MPanel.CurTime_h = 0; + MPanel.CurTime_m = 0; + MPanel.CurTime_s = 0; + MPanel.CurTime_ss = 0; + MPanel.TotalTime_h = 0; + MPanel.TotalTime_m = 0; + MPanel.TotalTime_s = 0; + MPanel.TotalTime_ss = 0; + MPanel.CurVoices = 0; + MPanel.MaxVoices = 0; + MPanel.MVolume = 0; + MPanel.Rate = 0; + MPanel.PlaylistNum = 0; + MPanel.PlaylistMax = 0; + MPanel.UpdateFlag = MP_UPDATE_ALL; +// MPanel.FGColor = RGB(0x00,0x00,0x00); +// MPanel.BGColor = RGB(0xff,0xff,0xff); + MPanel.FGColor = RGB(0x00,0x00,0x00); + MPanel.BGColor = RGB(0xc0,0xc0,0xc0); +#if 0 + if(MPanel.hFontTitle!=NULL) + DeleteObject(MPanel.hFontTitle); + if(MPanel.hFontFile!=NULL) + DeleteObject(MPanel.hFontFile); + if(MPanel.hFontTime!=NULL) + DeleteObject(MPanel.hFontTime); + if(MPanel.hFontVoices!=NULL) + DeleteObject(MPanel.hFontVoices); + if(MPanel.hFontMVolume!=NULL) + DeleteObject(MPanel.hFontMVolume); + if(MPanel.hFontRate!=NULL) + DeleteObject(MPanel.hFontRate); + if(MPanel.hFontList!=NULL) + DeleteObject(MPanel.hFontList); +#endif + MPanel.play_system_mode = DEFAULT_SYSTEM_MODE; + MPanel.current_file_info_file_type = IS_OTHER_FILE; + MPanel.current_file_info_max_channel = -1; +} + +// pl\XVB +void MPanelUpdate(void) +{ + if(!MPanelOK) + return; + if(MPanel.UpdateFlag==MP_UPDATE_NONE) + return; + if(MPanel.UpdateFlag & MP_UPDATE_BACKGROUND){ + // rbg}bv\thB + HPEN hPen; + HBRUSH hBrush; + COLORREF color = MPanel.FGColor; + RECT rc = MPanel.rcMe; + HGDIOBJ hgdiobj_hpen, hgdiobj_hbrush; + hPen = CreatePen(PS_SOLID,1,color); + hBrush = CreateSolidBrush(color); + hgdiobj_hpen = SelectObject(MPanel.hmdc, hPen); + hgdiobj_hbrush = SelectObject(MPanel.hmdc, hBrush); + Rectangle(MPanel.hmdc,rc.left,rc.top,rc.right,rc.bottom); + SelectObject(MPanel.hmdc, hgdiobj_hpen); + DeleteObject(hPen); + SelectObject(MPanel.hmdc, hgdiobj_hbrush); + DeleteObject(hBrush); + InvalidateRect(MPanel.hwnd,&rc, FALSE); + } + if(MPanel.UpdateFlag & MP_UPDATE_TITLE){ + HGDIOBJ hgdiobj = SelectObject(MPanel.hmdc,MPanel.hFontTitle); + SetTextColor(MPanel.hmdc,MPanel.FGColor); + SetBkColor(MPanel.hmdc,MPanel.BGColor); + //#include "w32g2_c.h" + SetTextAlign(MPanel.hmdc, TA_LEFT | TA_TOP | TA_NOUPDATECP); + ExtTextOut(MPanel.hmdc,MPanel.rcTitle.left,MPanel.rcTitle.top, + ETO_CLIPPED | ETO_OPAQUE,&(MPanel.rcTitle), + MPanel.Title,strlen(MPanel.Title),NULL); + if((HGDIOBJ)hgdiobj!=(HGDIOBJ)NULL && (HGDIOBJ)hgdiobj!=(HGDIOBJ)GDI_ERROR) + SelectObject(MPanel.hmdc,hgdiobj); + InvalidateRect(hPanelWnd, &(MPanel.rcTitle), FALSE); + } + if(MPanel.UpdateFlag & MP_UPDATE_FILE){ + HGDIOBJ hgdiobj = SelectObject(MPanel.hmdc,MPanel.hFontFile); + SetTextColor(MPanel.hmdc,MPanel.FGColor); + SetBkColor(MPanel.hmdc,MPanel.BGColor); + SetTextAlign(MPanel.hmdc, TA_LEFT | TA_TOP | TA_NOUPDATECP); + ExtTextOut(MPanel.hmdc,MPanel.rcFile.left,MPanel.rcFile.top, + ETO_CLIPPED | ETO_OPAQUE,&(MPanel.rcFile), + MPanel.File,strlen(MPanel.File),NULL); + if((HGDIOBJ)hgdiobj!=(HGDIOBJ)NULL && (HGDIOBJ)hgdiobj!=(HGDIOBJ)GDI_ERROR) + SelectObject(MPanel.hmdc,hgdiobj); + InvalidateRect(hPanelWnd, &(MPanel.rcFile), FALSE); + } + if(MPanel.UpdateFlag & MP_UPDATE_TIME){ + char buffer[256]; + HGDIOBJ hgdiobj = SelectObject(MPanel.hmdc,MPanel.hFontTime); + sprintf(buffer," %02d:%02d:%02d/%02d:%02d:%02d", + MPanel.CurTime_h,MPanel.CurTime_m,MPanel.CurTime_s, + MPanel.TotalTime_h,MPanel.TotalTime_m,MPanel.TotalTime_s); + SetTextColor(MPanel.hmdc,MPanel.FGColor); + SetBkColor(MPanel.hmdc,MPanel.BGColor); + SetTextAlign(MPanel.hmdc, TA_LEFT | TA_TOP | TA_NOUPDATECP); + ExtTextOut(MPanel.hmdc,MPanel.rcTime.left,MPanel.rcTime.top, + ETO_CLIPPED | ETO_OPAQUE,&(MPanel.rcTime), + buffer,strlen(buffer),NULL); + if((HGDIOBJ)hgdiobj!=(HGDIOBJ)NULL && (HGDIOBJ)hgdiobj!=(HGDIOBJ)GDI_ERROR) + SelectObject(MPanel.hmdc,hgdiobj); + InvalidateRect(hPanelWnd, &(MPanel.rcTime), FALSE); + } + if(MPanel.UpdateFlag & MP_UPDATE_VOICES){ + char buffer[256]; + HGDIOBJ hgdiobj = SelectObject(MPanel.hmdc,MPanel.hFontVoices); + sprintf(buffer," %03d/%03d",MPanel.CurVoices,MPanel.MaxVoices); + SetTextColor(MPanel.hmdc,MPanel.FGColor); + SetBkColor(MPanel.hmdc,MPanel.BGColor); + SetTextAlign(MPanel.hmdc, TA_LEFT | TA_TOP | TA_NOUPDATECP); + ExtTextOut(MPanel.hmdc,MPanel.rcVoices.left,MPanel.rcVoices.top, + ETO_CLIPPED | ETO_OPAQUE,&(MPanel.rcVoices), + buffer,strlen(buffer),NULL); + if((HGDIOBJ)hgdiobj!=(HGDIOBJ)NULL && (HGDIOBJ)hgdiobj!=(HGDIOBJ)GDI_ERROR) + SelectObject(MPanel.hmdc,hgdiobj); + InvalidateRect(hPanelWnd, &(MPanel.rcVoices), FALSE); + } + if(MPanel.UpdateFlag & MP_UPDATE_MVOLUME){ + char buffer[256]; + HGDIOBJ hgdiobj = SelectObject(MPanel.hmdc,MPanel.hFontVoices); + sprintf(buffer," %03d%%",MPanel.MVolume); + SetTextColor(MPanel.hmdc,MPanel.FGColor); + SetBkColor(MPanel.hmdc,MPanel.BGColor); + SetTextAlign(MPanel.hmdc, TA_LEFT | TA_TOP | TA_NOUPDATECP); + ExtTextOut(MPanel.hmdc,MPanel.rcMVolume.left,MPanel.rcMVolume.top, + ETO_CLIPPED | ETO_OPAQUE,&(MPanel.rcMVolume), + buffer,strlen(buffer),NULL); + if((HGDIOBJ)hgdiobj!=(HGDIOBJ)NULL && (HGDIOBJ)hgdiobj!=(HGDIOBJ)GDI_ERROR) + SelectObject(MPanel.hmdc,hgdiobj); + InvalidateRect(hPanelWnd, &(MPanel.rcMVolume), FALSE); + } + if(MPanel.UpdateFlag & MP_UPDATE_RATE){ + char buffer[256]; + HGDIOBJ hgdiobj = SelectObject(MPanel.hmdc,MPanel.hFontRate); + sprintf(buffer," %05dHz",MPanel.Rate); + SetTextColor(MPanel.hmdc,MPanel.FGColor); + SetBkColor(MPanel.hmdc,MPanel.BGColor); + SetTextAlign(MPanel.hmdc, TA_LEFT | TA_TOP | TA_NOUPDATECP); + ExtTextOut(MPanel.hmdc,MPanel.rcRate.left,MPanel.rcRate.top, + ETO_CLIPPED | ETO_OPAQUE,&(MPanel.rcRate), + buffer,strlen(buffer),NULL); + if((HGDIOBJ)hgdiobj!=(HGDIOBJ)NULL && (HGDIOBJ)hgdiobj!=(HGDIOBJ)GDI_ERROR) + SelectObject(MPanel.hmdc,hgdiobj); + InvalidateRect(hPanelWnd, &(MPanel.rcRate), FALSE); + } + if(MPanel.UpdateFlag & MP_UPDATE_PLAYLIST){ + char buffer[256]; + HGDIOBJ hgdiobj = SelectObject(MPanel.hmdc,MPanel.hFontList); + sprintf(buffer," %04d/%04d",MPanel.PlaylistNum,MPanel.PlaylistMax); + SetTextColor(MPanel.hmdc,MPanel.FGColor); + SetBkColor(MPanel.hmdc,MPanel.BGColor); + SetTextAlign(MPanel.hmdc, TA_LEFT | TA_TOP | TA_NOUPDATECP); + ExtTextOut(MPanel.hmdc,MPanel.rcList.left,MPanel.rcList.top, + ETO_CLIPPED | ETO_OPAQUE,&(MPanel.rcList), + buffer,strlen(buffer),NULL); + if((HGDIOBJ)hgdiobj!=(HGDIOBJ)NULL && (HGDIOBJ)hgdiobj!=(HGDIOBJ)GDI_ERROR) + SelectObject(MPanel.hmdc,hgdiobj); + InvalidateRect(hPanelWnd, &(MPanel.rcList), FALSE); + } + if(MPanel.UpdateFlag & MP_UPDATE_MISC){ + char buffer[256]; + HGDIOBJ hgdiobj = SelectObject(MPanel.hmdc,MPanel.hFontMisc); + buffer[0] = '\0'; + switch(MPanel.play_system_mode){ + case GM_SYSTEM_MODE: + strcat(buffer,"[GM]"); + break; + case GS_SYSTEM_MODE: + strcat(buffer,"[GS]"); + break; + case XG_SYSTEM_MODE: + strcat(buffer,"[XG]"); + break; + default: + case DEFAULT_SYSTEM_MODE: + strcat(buffer,"[--]"); + break; + } + switch(MPanel.current_file_info_file_type){ + case IS_SMF_FILE: + strcat(buffer,"[SMF]"); + break; + case IS_MCP_FILE: + strcat(buffer,"[MCP]"); + break; + case IS_RCP_FILE: + strcat(buffer,"[RCP]"); + break; + case IS_R36_FILE: + strcat(buffer,"[R36]"); + break; + case IS_G18_FILE: + strcat(buffer,"[G18]"); + break; + case IS_G36_FILE: + strcat(buffer,"[G36]"); + break; + case IS_SNG_FILE: + strcat(buffer,"[SNG]"); + break; + case IS_MM2_FILE: + strcat(buffer,"[MM2]"); + break; + case IS_MML_FILE: + strcat(buffer,"[MML]"); + break; + case IS_FM_FILE: + strcat(buffer,"[FM ]"); + break; + case IS_FPD_FILE: + strcat(buffer,"[FPD]"); + break; + case IS_MOD_FILE: + strcat(buffer,"[MOD]"); + break; + case IS_669_FILE: + strcat(buffer,"[669]"); + break; + case IS_MTM_FILE: + strcat(buffer,"[MTM]"); + break; + case IS_STM_FILE: + strcat(buffer,"[STM]"); + break; + case IS_S3M_FILE: + strcat(buffer,"[S3M]"); + break; + case IS_ULT_FILE: + strcat(buffer,"[ULT]"); + break; + case IS_XM_FILE: + strcat(buffer,"[XM ]"); + break; + case IS_FAR_FILE: + strcat(buffer,"[FAR]"); + break; + case IS_WOW_FILE: + strcat(buffer,"[WOW]"); + break; + case IS_OKT_FILE: + strcat(buffer,"[OKT]"); + break; + case IS_DMF_FILE: + strcat(buffer,"[DMF]"); + break; + case IS_MED_FILE: + strcat(buffer,"[MED]"); + break; + case IS_IT_FILE: + strcat(buffer,"[IT ]"); + break; + case IS_PTM_FILE: + strcat(buffer,"[PTM]"); + break; + default: + case IS_OTHER_FILE: + strcat(buffer,"[---]"); + break; + } + if(MPanel.current_file_info_max_channel>=0){ + char local[16]; + sprintf(local,"[%02dch]",MPanel.current_file_info_max_channel+1); + strcat(buffer,local); + }else + strcat(buffer,"[--ch]"); + SetTextColor(MPanel.hmdc,MPanel.FGColor); + SetBkColor(MPanel.hmdc,MPanel.BGColor); + SetTextAlign(MPanel.hmdc, TA_LEFT | TA_TOP | TA_NOUPDATECP); + ExtTextOut(MPanel.hmdc,MPanel.rcMisc.left,MPanel.rcMisc.top, + ETO_CLIPPED | ETO_OPAQUE,&(MPanel.rcMisc), + buffer,strlen(buffer),NULL); + if((HGDIOBJ)hgdiobj!=(HGDIOBJ)NULL && (HGDIOBJ)hgdiobj!=(HGDIOBJ)GDI_ERROR) + SelectObject(MPanel.hmdc,hgdiobj); + InvalidateRect(hPanelWnd, &(MPanel.rcMisc), FALSE); + } + if(MPanel.UpdateFlag & MP_UPDATE_MESSAGE){ + } + if(MPanel.UpdateFlag==MP_UPDATE_ALL) + InvalidateRect(hPanelWnd, NULL, FALSE); + MPanel.UpdateFlag = MP_UPDATE_NONE; +} + +static void MPanelPaintDo(void) +{ + PAINTSTRUCT ps; + HDC hdc; + hdc = BeginPaint(MPanel.hwnd, &ps); + BitBlt(hdc, + MPanel.rcMe.left,MPanel.rcMe.top,MPanel.rcMe.right,MPanel.rcMe.bottom, + MPanel.hmdc,0,0,SRCCOPY); + EndPaint(MPanel.hwnd, &ps); +} + +// ` +void MPanelPaint(void) +{ + UpdateWindow(hPanelWnd); +} + +// S` +void MPanelPaintAll(void) +{ + InvalidateRect(hPanelWnd, NULL, FALSE); + MPanelPaint(); +} + +// pl\SXVB +void MPanelUpdateAll(void) +{ + if(!MPanelOK) + return; + MPanel.UpdateFlag = MP_UPDATE_ALL; + MPanelUpdate(); +} + +// PanelInfo \pl\KpB +// flag XVB +void MPanelReadPanelInfo(int flag) +{ + int cur_pl_num, playlist_num; + + if(!MPanelOK) + return; + if(!PInfoOK) + return; + + if(!Panel->changed && !flag) + return; + + if(flag + || MPanel.CurTime_s != Panel->cur_time_s +// || MPanel.CurTime_ss != Panel->cur_time_ss + || MPanel.CurTime_m != Panel->cur_time_m + || MPanel.CurTime_h != Panel->cur_time_h + || MPanel.TotalTime_s != Panel->total_time_s +// || MPanel.TotalTime_ss != Panel->total_time_ss + || MPanel.TotalTime_m != Panel->total_time_m + || MPanel.TotalTime_h != Panel->total_time_h + ){ + MPanel.CurTime_h = Panel->cur_time_h; + MPanel.CurTime_m = Panel->cur_time_m; + MPanel.CurTime_s = Panel->cur_time_s; + MPanel.CurTime_ss = Panel->cur_time_ss; + MPanel.TotalTime_h = Panel->total_time_h; + MPanel.TotalTime_m = Panel->total_time_m; + MPanel.TotalTime_s = Panel->total_time_s; +// MPanel.TotalTime_ss = Panel->total_time_ss; + RANGE(MPanel.CurTime_h,0,99); + RANGE(MPanel.TotalTime_h,0,99); + MPanel.UpdateFlag |= MP_UPDATE_TIME; + } + if(flag || MPanel.MaxVoices != Panel->voices){ + MPanel.MaxVoices = Panel->voices; + MPanel.UpdateFlag |= MP_UPDATE_VOICES; + } + if(flag || MPanel.CurVoices != Panel->cur_voices){ + MPanel.CurVoices = Panel->cur_voices; + MPanel.UpdateFlag |= MP_UPDATE_VOICES; + } + if(flag || MPanel.MVolume != amplification){ + MPanel.MVolume = amplification; + MPanel.UpdateFlag |= MP_UPDATE_MVOLUME; + } + if(flag || MPanel.Rate != play_mode->rate){ + MPanel.Rate = play_mode->rate; + MPanel.UpdateFlag |= MP_UPDATE_RATE; + } + + w32g_get_playlist_index(&cur_pl_num, &playlist_num, NULL); + if(playlist_num > 0) + cur_pl_num++; + if(flag || MPanel.PlaylistNum != cur_pl_num){ + MPanel.PlaylistNum = cur_pl_num; + MPanel.UpdateFlag |= MP_UPDATE_PLAYLIST; + } + if(flag || MPanel.PlaylistMax != playlist_num){ + MPanel.PlaylistMax = playlist_num; + MPanel.UpdateFlag |= MP_UPDATE_PLAYLIST; + } + + if(flag || MPanel.play_system_mode != play_system_mode){ + MPanel.play_system_mode = play_system_mode; + MPanel.UpdateFlag |= MP_UPDATE_MISC; + } + if(current_file_info!=NULL){ + if(flag || MPanel.current_file_info_file_type != current_file_info->file_type){ + MPanel.current_file_info_file_type = current_file_info->file_type; + MPanel.UpdateFlag |= MP_UPDATE_MISC; + } + if(flag || MPanel.current_file_info_max_channel != current_file_info->max_channel){ + MPanel.current_file_info_max_channel = current_file_info->max_channel; + MPanel.UpdateFlag |= MP_UPDATE_MISC; + } + } +} + +void MPanelStartLoad(char *filename) +{ + strncpy((char *)MPanel.File, filename, MP_FILE_MAX); + MPanel.UpdateFlag |= MP_UPDATE_FILE; + MPanelUpdate(); +} + + + + +// ---------------------------------------------------------------------------- +// Misc. Controls + + + + + + + + + + + +// ---------------------------------------------------------------------------- + + + + + + + + + +// **************************************************************************** +// Version Window + +static void VersionWnd(HWND hParentWnd) +{ + char VersionText[2024]; + sprintf(VersionText, +"TiMidity++ version %s" NLS NLS +"TiMidity-0.2i by Tuukka Toivonen ." NLS +"TiMidity Win32 version by Davide Moretti ." NLS +"TiMidity Windows 95 port by Nicolas Witczak." NLS +"TiMidity Win32 GUI by Daisuke Aoki ." NLS +"TiMidity++ by Masanao Izumo ." NLS +,timidity_version); + MessageBox(hParentWnd, VersionText, "Version", MB_OK); +} + +static void TiMidityWnd(HWND hParentWnd) +{ + char TiMidityText[2024]; + sprintf(TiMidityText, +" TiMidity++ version %s -- Experimental MIDI to WAVE converter" NLS +" Copyright (C) 1999 Masanao Izumo " NLS +" Copyright (C) 1995 Tuukka Toivonen " NLS +NLS +" Win32 version by Davide Moretti " NLS +" GUI by Daisuke Aoki ." NLS +" Modified by Masanao Izumo ." NLS +NLS +" This program is free software; you can redistribute it and/or modify" NLS +" it under the terms of the GNU General Public License as published by" NLS +" the Free Software Foundation; either version 2 of the License, or" NLS +" (at your option) any later version." NLS +NLS +" This program is distributed in the hope that it will be useful," NLS +" but WITHOUT ANY WARRANTY; without even the implied warranty of"NLS +" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the" NLS +" GNU General Public License for more details." NLS +NLS +" You should have received a copy of the GNU General Public License" NLS +" along with this program; if not, write to the Free Software" NLS +" Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA." NLS +, +timidity_version + ); + MessageBox(hParentWnd, TiMidityText, "TiMidity", MB_OK); +} + + +// **************************************************************************** + +#ifdef W32GUI_DEBUG +void TiMidityHeapCheck(void) +{ + HANDLE *ProcessHeaps = NULL; + DWORD dwNumberOfHeaps; + DWORD dw = 10; + int i; + PrintfDebugWnd("\n[Heaps Check Start]\n"); + if(GetProcessHeap()!=NULL) + if(HeapValidate(GetProcessHeap(),0,NULL)==TRUE) + PrintfDebugWnd("Process Heap is Valid\n"); + else + PrintfDebugWnd("Process Heap is Invalid\n"); + ProcessHeaps = (HANDLE *)realloc(ProcessHeaps,sizeof(HANDLE)*dw); + dwNumberOfHeaps = GetProcessHeaps(dw, ProcessHeaps); + if(dw Clear! ###\n"); + break; + default: + break; + } + break; + case WM_SIZE: +// GetClientRect(hDebugWnd, &rc); +// MoveWindow(hDebugEditWnd, rc.left, rc.top,rc.right, rc.bottom - 30,TRUE); + return FALSE; + case WM_CLOSE: + ShowWindow(hDebugWnd, SW_HIDE); + break; + default: + return FALSE; + } + return FALSE; +} + +#if 0 +void InitDebugEditWnd(HWND hParentWnd) +{ + RECT rc; + GetClientRect(hParentWnd, &rc); + hDebugEditWnd = CreateWindowEx( + WS_EX_CLIENTEDGE|WS_EX_TOOLWINDOW|WS_EX_DLGMODALFRAME, + "EDIT","", + WS_CHILD | WS_VISIBLE | WS_VSCROLL | ES_AUTOHSCROLL | WS_HSCROLL + |ES_READONLY | ES_WANTRETURN | ES_MULTILINE | ES_AUTOVSCROLL , +// 0,0,rc.right, rc.bottom - 30,hParentWnd,NULL,hInst,NULL); + 0,0,100,100,hParentWnd,NULL,hInst,NULL); + SendMessage(hDebugEditWnd, EM_SETLIMITTEXT, (WPARAM)1024*640, 0); +// SendMessage(hDebugEditWnd, WM_PAINT, 0, 0); + GetClientRect(hParentWnd, &rc); + MoveWindow(hDebugEditWnd,rc.left,rc.top,rc.right,rc.bottom-30,TRUE); + ClearDebugWnd(); + ShowWindow(hDebugEditWnd,SW_SHOW); + UpdateWindow(hDebugEditWnd); +} +#endif + +void PutsDebugWnd(char *str) +{ + if(!IsWindow(hDebugEditWnd) || !DebugWndFlag) + return; + PutsEditCtlWnd(hDebugEditWnd,str); +} + +void PrintfDebugWnd(char *fmt, ...) +{ + va_list ap; + if(!IsWindow(hDebugEditWnd) || !DebugWndFlag) + return; + va_start(ap, fmt); + VprintfEditCtlWnd(hDebugEditWnd,fmt,ap); + va_end(ap); +} + +void ClearDebugWnd(void) +{ + if(!IsWindow(hDebugEditWnd)) + return; + ClearEditCtlWnd(hDebugEditWnd); +} +#endif + + + + + + + + + + + + + + + + + + + + + + +// **************************************************************************** +// Main Thread + + +void WINAPI MainThread(void *arglist) +{ + MSG msg; + + IsMainThreadExit = 0; + ThreadNumMax++; + +#ifdef W32GUI_DEBUG + PrintfDebugWnd("(*/%d)MainThread : Start.\n",ThreadNumMax); +#endif +#ifdef USE_THREADTIMES + ThreadTimesAddThread(hMainThread,"MainThread"); +#endif +// Thread priority +// SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_BELOW_NORMAL); + SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_NORMAL); +// SetThreadPriority(GetCurrentThread(),THREAD_PRIORITY_ABOVE_NORMAL); + + + InitStartWnd(SW_HIDE); + + w32g_wait_for_init = 0; + +// message loop for the application + while( GetMessage(&msg,NULL,0,0) ){ +// HandleFastSearch(msg); +//PrintfDebugWnd("H%lu M%lu WP%lu LP%lu T%lu x%d y%d\n", +// msg.hwnd, msg.message, msg.wParam, msg.lParam, msg.time, msg.pt.x, msg.pt.y); + TranslateMessage(&msg); + DispatchMessage(&msg); + } + +#ifdef W32GUI_DEBUG + Sleep(200); + PrintfDebugWnd("w32gui_main: DebugWndExit\n"); +// MessageBox(NULL, "Exit!","Exit!",MB_OK); + if(hDebugWnd!=NULL) + for(;;){ + if(!DebugThreadExit){ + SendMessage(hDebugWnd,WM_COMMAND,(WPARAM)IDC_BUTTON_EXIT,0); + Sleep(100); + } else + break; + } +#endif + if(!w32g_restart_gui_flag) + { + OnExitReady(); + w32g_send_rc(RC_QUIT, 0); + } + IsMainThreadExit = 1; + crt_endthread(); +} + + + + +// ************************************************************************** +// Misc Dialog +#define DialogMaxFileName 16536 +static char DialogFileNameBuff[DialogMaxFileName]; +static char *DlgFileOpen(HWND hwnd, char *title, char *filter, char *dir) +{ + OPENFILENAME ofn; + memset(DialogFileNameBuff, 0, sizeof(DialogFileNameBuff)); + memset(&ofn, 0, sizeof(OPENFILENAME)); + ofn.lStructSize = sizeof(OPENFILENAME); + ofn.hwndOwner = hwnd; + ofn.hInstance = hInst ; + ofn.lpstrFilter = filter; + ofn.lpstrCustomFilter = NULL; + ofn.nMaxCustFilter = 0; + ofn.nFilterIndex = 1 ; + ofn.lpstrFile = DialogFileNameBuff; + ofn.nMaxFile = sizeof(DialogFileNameBuff); + ofn.lpstrFileTitle = 0; + ofn.nMaxFileTitle = 0; + ofn.lpstrInitialDir = dir; + ofn.lpstrTitle = title; + ofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST + | OFN_ALLOWMULTISELECT | OFN_EXPLORER | OFN_READONLY; + ofn.lpstrDefExt = 0; + ofn.lCustData = 0; + ofn.lpfnHook = 0; + ofn.lpTemplateName= 0; + + if(GetOpenFileName(&ofn)==TRUE) + return DialogFileNameBuff; + else + return NULL; +} + +static void DlgMidiFileOpen(HWND hwnd) +{ + char *dir, *file; + char *filter = "midi file\0*.mid;*.smf;*.rcp;*.r36;*.g18;*.g36\0" + "archive file\0*.lzh;*.zip;*.gz\0" + "playlist file\0*.pls;*.m3u;*.asx\0" + "all files\0*.*\0" + "\0\0"; + + if(w32g_lock_open_file) + return; + + if(MidiFileOpenDir[0]) + dir = MidiFileOpenDir; else - { - i = ID2SubWindowIdx(id); - if(i == -1) + dir = NULL; + + if((file = DlgFileOpen(hwnd, NULL, filter, dir)) == NULL) + return; + + w32g_lock_open_file = 1; + w32g_send_rc(RC_EXT_LOAD_FILE, (int32)file); +} + +static void DlgDirOpen(HWND hwnd) +{ + static int initflag = 1; + static char biBuffer[MAXPATH + 256]; + static char Buffer[MAXPATH + 256]; + BROWSEINFO bi; + LPITEMIDLIST itemidlist; + + if(w32g_lock_open_file) return; - if(IsWindow(*(subwindow[i].hwnd))) - subwindow[i].status |= SWS_EXIST; + if(initflag==1){ + biBuffer[0] = '\0'; + initflag = 0; + } + memset(&bi, 0, sizeof(bi)); + bi.hwndOwner = NULL; + bi.pidlRoot = NULL; + bi.pszDisplayName = biBuffer; + bi.lpszTitle = "Select a directory with MIDI files."; + bi.ulFlags = 0; + bi.lpfn = NULL; + bi.lParam = 0; + bi.iImage = 0; + itemidlist = SHBrowseForFolder(&bi); + if(!itemidlist) + return; /* Cancel */ + SHGetPathFromIDList(itemidlist, Buffer); + strncpy(biBuffer, Buffer, sizeof(biBuffer)); + w32g_lock_open_file = 1; + directory_form(Buffer); + w32g_send_rc(RC_EXT_LOAD_FILE, (int32)Buffer); +} + +static void DlgPlaylistOpen(HWND hwnd) +{ + char *dir, *file; + char *filter = + "playlist file\0*.pls;*.m3u;*.asx\0" + "all files\0*.*\0" + "\0\0"; + + if(w32g_lock_open_file) + return; + + if(MidiFileOpenDir[0]) + dir = MidiFileOpenDir; + else + dir = NULL; + + if((file = DlgFileOpen(hwnd, NULL, filter, dir)) == NULL) + return; + + w32g_lock_open_file = 1; + w32g_send_rc(RC_EXT_LOAD_PLAYLIST, (int32)file); +} + +#include /* for stat() */ +static int CheckOverWrite(HWND hwnd, char *filename) +{ + char buff[BUFSIZ]; + int exists; + +#if 0 + FILE *fp; + if((fp = fopen(filename, "r")) == NULL) + exists = 0; else { - subwindow[i].status = 0; - return; + fclose(fp); + exists = 1; } - if(IsIconic(*(subwindow[i].hwnd))) - subwindow[i].status |= SWS_ICON; - else - subwindow[i].status &= ~SWS_ICON; - if(IsWindowVisible(*(subwindow[i].hwnd))) - subwindow[i].status &= ~SWS_HIDE; - else - subwindow[i].status |= SWS_HIDE; - } +#else + struct stat st; + exists = (stat(filename, &st) != -1); +#endif + + if(!exists) + return 1; + snprintf(buff, sizeof(buff), "%s exists. Overwrite it?", filename); + return MessageBox(hwnd, buff, "Warning", MB_YESNO) == IDYES; } -static LRESULT CALLBACK -StartWinProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +static void DlgPlaylistSave(HWND hwnd) +{ + OPENFILENAME ofn; + int res; + static char *dir; + char *filter = + "playlist file\0*.pls;*.m3u;*.asx\0" + "all files\0*.*\0" + "\0\0"; + + if(w32g_lock_open_file) + return; + + if(MidiFileOpenDir[0]) + dir = MidiFileOpenDir; + else + dir = NULL; + + memset(DialogFileNameBuff, 0, sizeof(DialogFileNameBuff)); + memset(&ofn, 0, sizeof(OPENFILENAME)); + ofn.lStructSize = sizeof(OPENFILENAME); + ofn.hwndOwner = hwnd; + ofn.hInstance = hInst; + ofn.lpstrFilter = filter; + ofn.lpstrCustomFilter = NULL; + ofn.nMaxCustFilter = 0; + ofn.nFilterIndex = 1 ; + ofn.lpstrFile = DialogFileNameBuff; + ofn.nMaxFile = sizeof(DialogFileNameBuff); + ofn.lpstrFileTitle = NULL; + ofn.nMaxFileTitle = 0; + ofn.lpstrInitialDir = dir; + ofn.lpstrTitle = "Save Playlist File"; + ofn.Flags = OFN_PATHMUSTEXIST | OFN_EXPLORER | OFN_HIDEREADONLY; + ofn.lpstrDefExt = 0; + ofn.lCustData = 0; + ofn.lpfnHook = 0; + ofn.lpTemplateName= 0; + + if(GetSaveFileName(&ofn) != TRUE) + return; + if(!CheckOverWrite(hwnd, DialogFileNameBuff)) + return; + w32g_lock_open_file = 1; + w32g_send_rc(RC_EXT_SAVE_PLAYLIST, (int32)DialogFileNameBuff); +} + + + +// **************************************************************************** +// Edit Ctl. + +void VprintfEditCtlWnd(HWND hwnd, char *fmt, va_list argList) { - switch(uMess) - { - HANDLE_MSG(hwnd, WM_CLOSE, DestroyWindow); - case WM_DESTROY: - OnDestroy(); - break; - default: - return DefWindowProc(hwnd,uMess,wParam,lParam); + char buffer[BUFSIZ], out[BUFSIZ]; + char *in; + int i; + + if(!IsWindow(hwnd)) + return; + + vsnprintf(buffer, sizeof(buffer), fmt, argList); + in = buffer; + i = 0; + for(;;){ + if(*in == '\0' || i>sizeof(out)-3){ + out[i] = '\0'; + break; + } + if(*in=='\n'){ + out[i] = 13; + out[i+1] = 10; + in++; + i += 2; + continue; + } + out[i] = *in; + in++; + i++; + } + Edit_SetSel(hwnd,-1,-1); + Edit_ReplaceSel(hwnd,out); +} + +void PrintfEditCtlWnd(HWND hwnd, char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + VprintfEditCtlWnd(hwnd,fmt,ap); + va_end(ap); +} + +#if 1 +void PutsEditCtlWnd(HWND hwnd, char *str) +{ + char *in = str; + int i; + char out[BUFSIZ]; + i = 0; + for(;;){ + if(*in == '\0' || i>sizeof(out)-3){ + out[i] = '\0'; + break; } - return 0L; + if(*in=='\n'){ + out[i] = 13; + out[i+1] = 10; + in++; + i += 2; + continue; + } + out[i] = *in; + in++; + i++; + } + if(IsWindow(hwnd)){ + Edit_SetSel(hwnd,-1,-1); + Edit_ReplaceSel(hwnd,out); + } +} +#else +void PutsEditCtlWnd(HWND hwnd, char *str) +{ + if(!IsWindow(hwnd)) + return; + PrintfEditCtlWnd(hwnd,"%s",str); } +#endif -static void GUIThread(void *arglist) +void ClearEditCtlWnd(HWND hwnd) { - MSG msg; - HICON hIcon; - WNDCLASSEX wcl; + char pszVoid[]=""; + if(!IsWindow(hwnd)) + return; + if(IsWindow(hwnd)){ +// Edit_SetSel(hwnd,0,-1); + Edit_SetSel(hwnd,-1,-1); + } + Edit_SetText(hwnd,pszVoid); +} -// InitCommonControls(); - hIcon = LoadIcon(hInst, MAKEINTRESOURCE(IDI_ICON_TIMIDITY)); - memset(&wcl, 0, sizeof(wcl)); - wcl.cbSize = sizeof(WNDCLASSEX); - wcl.hInstance = hInst; - wcl.lpszClassName = StartWndClassName; - wcl.lpfnWndProc = StartWinProc; - wcl.style = 0; - wcl.hIcon = hIcon; - wcl.hCursor = LoadCursor(0,IDC_ARROW); - wcl.lpszMenuName = NULL; - wcl.cbClsExtra = 0; - wcl.cbWndExtra = 0; - wcl.hbrBackground = (HBRUSH)(COLOR_SCROLLBAR + 1); - RegisterClassEx(&wcl); - - hStartWnd = CreateWindow(StartWndClassName, - "TiMidity", - WS_OVERLAPPEDWINDOW, - CW_USEDEFAULT, CW_USEDEFAULT, - CW_USEDEFAULT, CW_USEDEFAULT, - HWND_DESKTOP, - NULL, - hInst, - NULL); - ShowWindow(hStartWnd, SW_HIDE); - UpdateWindow(hStartWnd); - - /* Main Window */ - hMainWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DIALOG_MAIN), - hStartWnd, MainProc); - if(hIcon != NULL) - SendMessage(hMainWnd, WM_SETICON, FALSE, (LPARAM)hIcon); - UpdateWindow(hMainWnd); - - InitToolbar(hMainWnd); - -// /* ListWnd */ -// ShowWindow(hListWnd,SW_HIDE); -// UpdateWindow(hListWnd); - - /* ConsoleWnd */ - hConsoleWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DIALOG_CONSOLE), - hStartWnd, ConsoleWndProc); - ConsoleWndVerbosityApplyIncDec(0); - ShowWindow(hConsoleWnd, SW_HIDE); - UpdateWindow(hConsoleWnd); - CheckDlgButton(hConsoleWnd, IDC_CHECKBOX_VALID, 1); - - /* Scrollbar */ - hMainWndScrollbarProgressWnd = GetDlgItem(hMainWnd, IDC_SCROLLBAR_PROGRESS); - hMainWndScrollbarVolumeWnd = GetDlgItem(hMainWnd, IDC_SCROLLBAR_VOLUME); - EnableScrollBar(hMainWndScrollbarVolumeWnd, SB_CTL,ESB_ENABLE_BOTH); - SetScrollRange(hMainWndScrollbarVolumeWnd, SB_CTL, - 0, W32G_VOLUME_MAX, TRUE); - SetScrollPos(hMainWndScrollbarVolumeWnd, SB_CTL, - W32G_VOLUME_MAX - amplification, TRUE); - - update_subwindow(-1); - - TmInitColor(); - w32g_init_panel(hMainWnd); /* Panel */ - w32g_init_canvas(hMainWnd); /* Canvas */ +// **************************************************************************** +// Misc funciton. - w32g_wait_for_init = 0; - while(GetMessage(&msg,NULL,0,0)) - { - TranslateMessage(&msg); - DispatchMessage(&msg); - } - w32g_send_rc(RC_QUIT, 0); - ExitThread(0); +#ifndef WIN32GCC +static char *get_filename(char *src, char *dest) +{ + char *p = src; + char *start = NULL; + int quot_flag = 0; + if(p == NULL) + return NULL; + for(;;){ + if(*p != ' ' && *p != '\0' && start == NULL) + start = p; + if(*p == '\'' || *p == '\"'){ + if(quot_flag){ + if(p - start != 0) + strncpy(dest, start, p - start); + dest[p-start] = '\0'; + p++; + return p; + } else { + quot_flag = !quot_flag; + p++; + start = p; + continue; + } + } + if(*p == '\0' || (*p == ' ' && !quot_flag)){ + if(start == NULL) + return NULL; + if(p - start != 0) + strncpy(dest, start, p - start); + dest[p-start] = '\0'; + if(*p != '\0') + p++; + return p; + } + p++; + } } -void w32g_close(void) +static void CmdLineToArgv(LPSTR lpCmdLine, int *pArgc, CHAR ***pArgv) { - TerminateThread(hGUIThread, 0); - CloseHandle(w32g_lock_sem); - CloseHandle(w32g_empty_sem); + LPSTR p = lpCmdLine , buffer, lpsRes; + int i, max = -1, inc = 16; + int buffer_size; + + *pArgv = NULL; + buffer_size = strlen(lpCmdLine) + 1024; +// buffer = safe_malloc(sizeof(CHAR) * buffer_size + 1); + buffer = (LPSTR)malloc(sizeof(CHAR) * buffer_size + 1); + strcpy(buffer, lpCmdLine); + + for(i=0;;i++) + { + if(i > max){ + max += inc; +// *pArgv = (CHAR **)safe_realloc(*pArgv, sizeof(CHAR *) * (max + 1)); + *pArgv = (CHAR **)realloc(*pArgv, sizeof(CHAR *) * (max + 2)); + } + if(i==0){ + GetModuleFileName(NULL,buffer,buffer_size); + lpsRes = p; + } else + lpsRes = get_filename(p,buffer); + if(lpsRes != NULL){ +// (*pArgv)[i] = (CHAR *)safe_malloc(sizeof(CHAR) * strlen(buffer) + 1); + (*pArgv)[i] = (CHAR *)malloc(sizeof(CHAR) * strlen(buffer) + 1); + strcpy((*pArgv)[i],buffer); + p = lpsRes; + } else { + *pArgc = i; + free(buffer); + return; + } + } } +#endif /* !WIN32GCC */ -int w32g_open(void) +int w32g_msg_box(char *message, char *title, int type) { - SaveSettingTiMidity(st_current); + return MessageBox(hMainWnd, message, title, type); +} - w32g_lock_sem = CreateSemaphore(NULL, 1, 1, "TiMidity Mutex Lock"); - w32g_empty_sem = CreateSemaphore(NULL, 0, 8, "TiMidity Empty Lock"); - hPlayerThread = GetCurrentThread(); - w32g_wait_for_init = 1; - hGUIThread = CreateThread(NULL, 0, - (LPTHREAD_START_ROUTINE)GUIThread, - NULL, 0, &dwGUIThreadID); - while(w32g_wait_for_init) - { - Sleep(0); - VOLATILE_TOUCH(w32g_wait_for_init); - } - return 0; +#define RC_QUEUE_SIZE 8 +static struct +{ + int rc; + int32 value; +} rc_queue[RC_QUEUE_SIZE]; +static volatile int rc_queue_len, rc_queue_beg, rc_queue_end; + +static HANDLE w32g_lock_sem = NULL; +static HANDLE w32g_empty_sem = NULL; + +void w32g_lock(void) +{ + WaitForSingleObject(w32g_lock_sem, INFINITE); +} + +void w32g_unlock(void) +{ + ReleaseSemaphore(w32g_lock_sem, 1, NULL); } -static void InitToolbar(HWND hwnd) +void w32g_send_rc(int rc, int32 value) { - TBADDBITMAP MainTbab; - TBADDBITMAP SubWndTbab; + w32g_lock(); - static TBBUTTON MainTbb[] = + if(rc_queue_len == RC_QUEUE_SIZE) { - {4, IDM_STOP, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, - {3, IDM_PAUSE, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0}, - {0, IDM_PREV, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, - {1, IDM_BACKWARD,TBSTATE_ENABLED,TBSTYLE_BUTTON, 0, 0}, - {2, IDM_PLAY, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0}, - {5, IDM_FOREWARD,TBSTATE_ENABLED,TBSTYLE_BUTTON, 0, 0}, - {6, IDM_NEXT, TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0} - }; - static TBBUTTON SubWndTbb[] = { - {3, IDM_CONSOLE,TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0}, - {1, IDM_LIST, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0}, - {2, IDM_TRACER, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0}, - {0, IDM_DOC, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0}, - {4, IDM_WRD, TBSTATE_ENABLED, TBSTYLE_CHECK, 0, 0}, - }; - - SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN, - TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); - SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN, - TB_SETBUTTONSIZE, (WPARAM)0, (LPARAM)MAKELONG(16,16)); - MainTbab.hInst = hInst; - MainTbab.nID = (int)IDB_BITMAP_MAIN_BUTTON; - SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN, - TB_ADDBITMAP, 7, (LPARAM)&MainTbab); - SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN, - TB_ADDBUTTONS, (WPARAM)7, (LPARAM)MainTbb); - SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_MAIN, - TB_AUTOSIZE, 0, 0); - - - SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND, - TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0); - SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND, - TB_SETBUTTONSIZE, (WPARAM)0, (LPARAM)MAKELONG(16,16)); - SubWndTbab.hInst = hInst; - SubWndTbab.nID = (int)IDB_BITMAP_SUBWND_BUTTON; - SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND, - TB_ADDBITMAP, 5, (LPARAM)&SubWndTbab); - SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND, - TB_ADDBUTTONS, (WPARAM)5, (LPARAM)SubWndTbb); - SendDlgItemMessage(hwnd, IDC_TOOLBARWINDOW_SUBWND, - TB_AUTOSIZE, 0, 0); -} - -static int ID2SubWindowIdx(int id) -{ - int i; - - for(i = 0; subwindow[i].id; i++) - if(subwindow[i].id == id) - return i; - return -1; -} - -static HWND ID2SubWindow(int id) -{ - int i; - - i = ID2SubWindowIdx(id); - if(i == -1) - return 0; - return *subwindow[i].hwnd; + /* Over flow. Remove the oldest message */ + rc_queue_len--; + rc_queue_beg = (rc_queue_beg + 1) % RC_QUEUE_SIZE; + } + + rc_queue_len++; + rc_queue[rc_queue_end].rc = rc; + rc_queue[rc_queue_end].value = value; + rc_queue_end = (rc_queue_end + 1) % RC_QUEUE_SIZE; + ReleaseSemaphore(w32g_empty_sem, 1, NULL); + w32g_unlock(); } -static void MainWndUpdateButton(int id) +int w32g_get_rc(int32 *value, int wait_if_empty) { - HWND hwnd = ID2SubWindow(id); + int rc; - if(!hwnd) - return; - if(IsWindowVisible(hwnd)) - SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, - TB_CHECKBUTTON, id, (LPARAM)MAKELONG(TRUE, 0)); - else - SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, - TB_CHECKBUTTON, id, (LPARAM)MAKELONG(FALSE, 0)); + while(rc_queue_len == 0) + { + if(!wait_if_empty) + return RC_NONE; + WaitForSingleObject(w32g_empty_sem, INFINITE); + VOLATILE_TOUCH(rc_queue_len); + } + + w32g_lock(); + rc = rc_queue[rc_queue_beg].rc; + *value = rc_queue[rc_queue_beg].value; + rc_queue_len--; + rc_queue_beg = (rc_queue_beg + 1) % RC_QUEUE_SIZE; + w32g_unlock(); + + return rc; } -static WINBOOL CALLBACK -ListWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +int w32g_open(void) { - switch(uMess) + SaveSettingTiMidity(st_current); + memcpy(st_temp, st_current, sizeof(SETTING_TIMIDITY)); + + w32g_lock_sem = CreateSemaphore(NULL, 1, 1, "TiMidity Mutex Lock"); + w32g_empty_sem = CreateSemaphore(NULL, 0, 8, "TiMidity Empty Lock"); + + hPlayerThread = GetCurrentThread(); + w32g_wait_for_init = 1; + hMainThread = crt_beginthreadex(NULL, 0, + (LPTHREAD_START_ROUTINE)MainThread, + NULL, 0, &dwMainThreadID); + while(w32g_wait_for_init) { - case WM_INITDIALOG: - w32g_send_rc(RC_EXT_UPDATE_PLAYLIST, 0); - break; - case WM_COMMAND: - switch(HIWORD(wParam)) - { - case IDCLOSE: - ShowWindow(hwnd, SW_HIDE); - MainWndUpdateButton(IDM_LIST); - break; - case LBN_DBLCLK: - if(LOWORD(wParam) == IDC_LISTBOX_PLAYLIST) - { - HWND hListBox = (HWND)lParam; - int num = ListBox_GetCurSel(hListBox); - if(w32g_goto_playlist(num)) - w32g_send_rc(RC_LOAD_FILE, 0); - } - break; - } - break; - case WM_VKEYTOITEM: { - UINT vkey = (UINT)LOWORD(wParam); - int nCaretPos = (int)HIWORD(wParam); - int selected, nfiles; - switch(vkey) - { - case VK_RETURN: - if(w32g_goto_playlist(nCaretPos)) - w32g_send_rc(RC_LOAD_FILE, 0); - break; - case VK_DELETE: - w32g_send_rc(RC_EXT_DELETE_PLAYLIST, 0); - break; - case VK_BACK: - w32g_send_rc(RC_EXT_DELETE_PLAYLIST, -1); - break; - } - return -1; - } - break; - case WM_CLOSE: - ShowWindow(hListWnd, SW_HIDE); - MainWndUpdateButton(IDM_LIST); - break; - case WM_DROPFILES: - SendMessage(hMainWnd, WM_DROPFILES, wParam, lParam); - break; - case WM_SIZE: - if(wParam == SIZE_RESTORED) - { - HWND hListBox = GetDlgItem(hListWnd, IDC_LISTBOX_PLAYLIST); - if(!hListBox) - break; - MoveWindow(hListBox, 0, 0, LOWORD(lParam), HIWORD(lParam), FALSE); - ShowWindow(hListWnd, SW_HIDE); - ShowWindow(hListWnd, SW_SHOW); - } - break; + Sleep(0); + VOLATILE_TOUCH(w32g_wait_for_init); } return 0; } -static void ClearEditCtlWnd(HWND hwnd) +void w32g_close(void) { - char pszVoid[]=""; - if(!IsWindow(hwnd)) - return; - Edit_SetText(hwnd, pszVoid); + if(!IsMainThreadExit) + { + OnQuit(); + do + { + sleep(100); + VOLATILE_TOUCH(IsMainThreadExit); + } while(!IsMainThreadExit); + } + CloseHandle(w32g_lock_sem); + CloseHandle(w32g_empty_sem); } -static BOOL CALLBACK -ConsoleWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +void w32g_restart(void) { - HWND w; + w32g_restart_gui_flag = 1; - switch(uMess) - { - case WM_COMMAND: - switch(LOWORD(wParam)) + /* Terminate MainThread */ + if(!IsMainThreadExit) { - case IDCLOSE: - ShowWindow(hwnd, SW_HIDE); - MainWndUpdateButton(IDM_CONSOLE); - break; - case IDCLEAR: - if((w = GetDlgItem(hConsoleWnd, IDC_EDIT_TERMINAL)) != 0) - ClearEditCtlWnd(w); - break; -#if 0 - case IDC_CHECKBOX_VALID: - ConsoleWndValidApply(); - break; - case IDC_BUTTON_VERBOSITY: - ConsoleWndVerbosityApply(); - break; -#endif - case IDC_BUTTON_INC: - ConsoleWndVerbosityApplyIncDec(1); - break; - case IDC_BUTTON_DEC: - ConsoleWndVerbosityApplyIncDec(-1); - break; + OnQuit(); + do + { + usleep(200); + } while(!IsMainThreadExit); } - break; - case WM_CLOSE: - ShowWindow(hwnd, SW_HIDE); - MainWndUpdateButton(IDM_CONSOLE); - break; - case WM_SETFOCUS: - HideCaret(hwnd); - break; - case WM_KILLFOCUS: - ShowCaret(hwnd); - break; - } - return 0; -} -void ConsoleWndVerbosityApplyIncDec(int num) -{ - char buff[32]; - HWND hwnd; + CloseHandle(w32g_lock_sem); + CloseHandle(w32g_empty_sem); - hwnd = GetDlgItem(hConsoleWnd, IDC_EDIT_VERBOSITY); - if(!hwnd) - return; - ctl->verbosity += num; - sprintf(buff, "%d", ctl->verbosity); - SetWindowText(hwnd, buff); + if(MPanel.hFontTitle!=NULL) + DeleteObject(MPanel.hFontTitle); + if(MPanel.hFontFile!=NULL) + DeleteObject(MPanel.hFontFile); + if(MPanel.hFontTime!=NULL) + DeleteObject(MPanel.hFontTime); + if(MPanel.hFontVoices!=NULL) + DeleteObject(MPanel.hFontVoices); + if(MPanel.hFontMVolume!=NULL) + DeleteObject(MPanel.hFontMVolume); + if(MPanel.hFontRate!=NULL) + DeleteObject(MPanel.hFontRate); + if(MPanel.hFontList!=NULL) + DeleteObject(MPanel.hFontList); + + /* Reset variable */ + hStartWnd = 0; + hMainWnd = 0; + hDebugWnd = 0; + hConsoleWnd = 0; + hTracerWnd = 0; + hDocWnd = 0; + hListWnd = 0; + hWrdWnd = 0; + hSoundSpecWnd = 0; + hDebugEditWnd = 0; + hDocEditWnd = 0; + + /* Now ready to start */ + w32g_open(); + w32g_restart_gui_flag = 0; } void w32g_ctle_play_start(int sec) { - if(sec > 0) + char *title; + + if(sec >= 0) { SetScrollRange(hMainWndScrollbarProgressWnd, SB_CTL, 0, sec, TRUE); MainWndScrollbarProgressUpdate(0); } else MainWndScrollbarProgressUpdate(-1); + + Panel->cur_time_h = MPanel.CurTime_h = 0; + Panel->cur_time_m = MPanel.CurTime_m = 0; + Panel->cur_time_s = MPanel.CurTime_s = 0; + Panel->cur_time_ss = MPanel.CurTime_ss = 0; + + MPanel.TotalTime_h = sec / 60 / 60; + RANGE(MPanel.TotalTime_h, 0, 99); + Panel->total_time_h = MPanel.TotalTime_h; + + sec %= 60 * 60; + Panel->total_time_m = MPanel.TotalTime_m = sec / 60; + Panel->total_time_s = MPanel.TotalTime_s = sec % 60; + Panel->total_time_ss = MPanel.TotalTime_ss = 0; + + MPanel.UpdateFlag |= MP_UPDATE_TIME; + + /* Now, ready to get the title of MIDI */ + if((title = get_midi_title(MPanel.File)) != NULL) + { + strncpy(MPanel.Title, title, MP_TITLE_MAX); + MPanel.UpdateFlag |= MP_UPDATE_TITLE; + } + MPanelUpdate(); } void MainWndScrollbarProgressUpdate(int sec) @@ -1084,297 +3741,9 @@ lastsec = sec; } -static void InitListWnd(HWND hParentWnd) -{ - hListWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DIALOG_SIMPLE_LIST), - hStartWnd, ListWndProc); -} - -// ***************************************************************************** -// TiMidity settings - -static BOOL CALLBACK SettingWndProc(HWND hwnd, UINT uMess, - WPARAM wParam, LPARAM lParam); -static HWND hComboOutput, hOutputEdit, hOutputRefBtn; - - -static void InitSettingWnd(HWND hParentWnd) -{ - int i, selected, output_enabled; - - hSettingWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_DIALOG_SETTING), - hParentWnd, SettingWndProc); -// ShowWindow(hSettingWnd,SW_HIDE); -// UpdateWindow(hSettingWnd); - - hComboOutput = GetDlgItem(hSettingWnd, IDC_COMBO_OUTPUT_MODE); - hOutputEdit = GetDlgItem(hSettingWnd, IDC_EDIT_OUTPUT_FILE); - hOutputRefBtn = GetDlgItem(hSettingWnd, IDC_BUTTON_REF); - - selected = 0; - for(i = 0; w32g_play_mode_list[i].play_mode != NULL; i++) - { - ComboBox_InsertString(hComboOutput, i, - w32g_play_mode_list[i].play_mode->id_name); - if(w32g_play_mode_list[i].play_mode->id_character == - play_mode->id_character) - selected = i; - } - ComboBox_SetCurSel(hComboOutput, selected); - SetDlgItemText(hSettingWnd, IDC_EDIT_OUTPUT_FILE, - play_mode->name ? play_mode->name : ""); - output_enabled = w32g_play_mode_list[selected].play_mode->id_character != 'd'; - EnableWindow(hOutputEdit, output_enabled); - EnableWindow(hOutputRefBtn, output_enabled); -} - -static void OpenSettingWnd(HWND hParentWnd) -{ - SettingWndSetup(st_current); - ShowWindow(hSettingWnd,SW_SHOW); - UpdateWindow(hSettingWnd); -} - -#define IS_CHECKED(hwnd, id) (SendDlgItemMessage(hwnd, id, BM_GETCHECK, 0, 0) == BST_CHECKED) -#define SET_CHECKED(hwnd, id, test) \ - if(test) \ - SendDlgItemMessage(hwnd, id, BM_SETCHECK, BST_CHECKED, 0); \ - else \ - SendDlgItemMessage(hwnd, id, BM_SETCHECK, BST_UNCHECKED, 0) - -static void SettingWndSetup(SETTING_TIMIDITY *st) -{ - char numstr[16]; - int flag[4]; - int i; - - SET_CHECKED(hSettingWnd, IDC_CHECKBOX_CHORUS, st->opt_chorus_control); - SET_CHECKED(hSettingWnd, IDC_CHECKBOX_REVERB, st->opt_reverb_control); - SET_CHECKED(hSettingWnd, IDC_CHECKBOX_DELAY_EFFECT, st->effect_lr_mode != -1); - SET_CHECKED(hSettingWnd, IDC_CHECKBOX_FREE_INST, - st->free_instruments_afterwards); - SET_CHECKED(hSettingWnd, IDC_CHECKBOX_ANTIALIAS, st->antialiasing_allowed); - SET_CHECKED(hSettingWnd, IDC_CHECKBOX_MODWHEEL, st->opt_modulation_wheel); - SET_CHECKED(hSettingWnd, IDC_CHECKBOX_PORTAMENT, st->opt_portamento); - SET_CHECKED(hSettingWnd, IDC_CHECKBOX_NRPNVIB, st->opt_nrpn_vibrato); - SET_CHECKED(hSettingWnd, IDC_CHECKBOX_CHPRESS, st->opt_channel_pressure); - SET_CHECKED(hSettingWnd, IDC_CHECKBOX_OVOICE, st->opt_overlap_voice_allow); - SET_CHECKED(hSettingWnd, IDC_CHECKBOX_LOADINST_PLAYING, - st->opt_realtime_playing); - - /* Mono/Stereo */ - memset(flag, 0, sizeof(flag)); - if(strchr(st->opt_playmode + 1, 'M')) - flag[0] = 1; - else - flag[1] = 1; - SET_CHECKED(hSettingWnd, IDC_RADIO_MONO, flag[0]); - SET_CHECKED(hSettingWnd, IDC_RADIO_STEREO, flag[1]); - - /* 16/8/U/A */ - memset(flag, 0, sizeof(flag)); - if(strchr(st->opt_playmode + 1, '1')) - flag[0] = 1; - else if(strchr(st->opt_playmode + 1, 'U')) - flag[2] = 1; - else if(strchr(st->opt_playmode + 1, 'A')) - flag[3] = 1; - else - flag[1] = 1; - SET_CHECKED(hSettingWnd, IDC_RADIO_16BITS, flag[0]); - SET_CHECKED(hSettingWnd, IDC_RADIO_8BITS, flag[1]); - SET_CHECKED(hSettingWnd, IDC_RADIO_ULAW, flag[2]); - SET_CHECKED(hSettingWnd, IDC_RADIO_ALAW, flag[3]); - - /* Output Mode */ - for(i = 0; w32g_play_mode_list[i].play_mode != NULL; i++) - if(st->opt_playmode[0] == w32g_play_mode_list[i].play_mode->id_character) - break; - if(w32g_play_mode_list[i].play_mode == NULL) - i = 0; - ComboBox_SetCurSel(hComboOutput, i); - i = (w32g_play_mode_list[i].play_mode->id_character != 'd'); - EnableWindow(hOutputEdit, i); - EnableWindow(hOutputRefBtn, i); - - /* sample rate */ - sprintf(numstr, "%d", st->output_rate); - SetDlgItemText(hSettingWnd, IDC_EDIT_SAMPLE_RATE, numstr); - - /* number of voices */ - sprintf(numstr, "%d", st->voices); - SetDlgItemText(hSettingWnd, IDC_EDIT_VOICES, numstr); - - /* Noise sharping */ - sprintf(numstr, "%d", st->noise_sharp_type); - SetDlgItemText(hSettingWnd, IDC_EDIT_NOISESHARPING, numstr); -} - -void SettingWndApply(void) -{ - char buff[BUFSIZ]; - extern void timidity_init_aq_buff(void); - int i, selected; - - st_current->opt_chorus_control = - IS_CHECKED(hSettingWnd, IDC_CHECKBOX_CHORUS); - st_current->opt_reverb_control = - IS_CHECKED(hSettingWnd, IDC_CHECKBOX_REVERB); - if(IS_CHECKED(hSettingWnd, IDC_CHECKBOX_DELAY_EFFECT)) - st_current->effect_lr_mode = 2; - else - st_current->effect_lr_mode = -1; - st_current->free_instruments_afterwards = - IS_CHECKED(hSettingWnd, IDC_CHECKBOX_FREE_INST); - st_current->antialiasing_allowed = - IS_CHECKED(hSettingWnd, IDC_CHECKBOX_ANTIALIAS); - st_current->opt_modulation_wheel = - IS_CHECKED(hSettingWnd, IDC_CHECKBOX_MODWHEEL); - st_current->opt_portamento = - IS_CHECKED(hSettingWnd, IDC_CHECKBOX_PORTAMENT); - st_current->opt_nrpn_vibrato = - IS_CHECKED(hSettingWnd, IDC_CHECKBOX_NRPNVIB); - st_current->opt_channel_pressure = - IS_CHECKED(hSettingWnd, IDC_CHECKBOX_CHPRESS); - st_current->opt_overlap_voice_allow = - IS_CHECKED(hSettingWnd, IDC_CHECKBOX_OVOICE); - st_current->opt_realtime_playing = - IS_CHECKED(hSettingWnd, IDC_CHECKBOX_LOADINST_PLAYING); - GetDlgItemText(hSettingWnd, IDC_EDIT_NOISESHARPING, buff, sizeof(buff)); - st_current->noise_sharp_type = atoi(buff); - GetDlgItemText(hSettingWnd, IDC_EDIT_SAMPLE_RATE, buff, sizeof(buff)); - st_current->output_rate = atoi(buff); - GetDlgItemText(hSettingWnd, IDC_EDIT_VOICES, buff, sizeof(buff)); - st_current->voices = atoi(buff); - - selected = ComboBox_GetCurSel(hComboOutput); - i = 0; - st_current->opt_playmode[i++] = - w32g_play_mode_list[selected].play_mode->id_character; - if(IS_CHECKED(hSettingWnd, IDC_RADIO_16BITS)) - st_current->opt_playmode[i++] = '1'; - else if(IS_CHECKED(hSettingWnd, IDC_RADIO_8BITS)) - st_current->opt_playmode[i++] = '8'; - else if(IS_CHECKED(hSettingWnd, IDC_RADIO_ULAW)) - st_current->opt_playmode[i++] = 'U'; - else if(IS_CHECKED(hSettingWnd, IDC_RADIO_ALAW)) - st_current->opt_playmode[i++] = 'A'; - if(IS_CHECKED(hSettingWnd, IDC_RADIO_MONO)) - st_current->opt_playmode[i++] = 'M'; - else - st_current->opt_playmode[i++] = 'S'; - if(w32g_play_mode_list[selected].orig_encoding & PE_SIGNED) - st_current->opt_playmode[i++] = 's'; - else - st_current->opt_playmode[i++] = 'u'; - if(w32g_play_mode_list[selected].orig_encoding & PE_BYTESWAP) - st_current->opt_playmode[i++] = 'x'; - st_current->opt_playmode[i++] = '\0'; - - if(st_current->opt_playmode[0] == 'd') - st_current->OutputName[0] = '\0'; - else - { - GetDlgItemText(hSettingWnd, IDC_EDIT_OUTPUT_FILE, buff, sizeof(buff)); - strncpy(st_current->OutputName, buff, sizeof(st_current->OutputName)); - } - - free_instruments(1); - if(play_mode->fd != -1) - { - play_mode->close_output(); -// w32g_msg_box("Stopped playing because the parameters are changed.", -// "Warning", MB_OK); - } - - ApplySettingTiMidity(st_current); - ctl->trace_playing = (TmCanvasMode != TMCM_SLEEP); - restore_voices(1); -} - -static void DlgSelectOutputFile(void) -{ - OPENFILENAME ofn; - static char pFileName[16536]; - char *dir; - static char *filter = NULL; -// "Midi file\0*.mid;*.smf;*.rcp;*.r36;*.g18;*.g36\0" -// "Archive file\0*.lzh;*.zip;*.gz;*.tgz\0" -// "All files\0*.*\0" -// "\0\0"; - if(w32g_lock_open_file) - return; - - memset(pFileName, 0, sizeof(pFileName)); - memset(&ofn, 0, sizeof(OPENFILENAME)); - if(MidiFileOpenDir[0]) - dir = MidiFileOpenDir; - else - dir = NULL; - - ofn.lStructSize = sizeof(OPENFILENAME); - ofn.hwndOwner = 0; - ofn.hInstance = hInst; - ofn.lpstrFilter = filter; - ofn.lpstrCustomFilter= 0; - ofn.nMaxCustFilter = 1; - ofn.nFilterIndex = 1 ; - ofn.lpstrFile = pFileName; - ofn.nMaxFile = sizeof(pFileName); - ofn.lpstrFileTitle = 0; - ofn.nMaxFileTitle = 0; - ofn.lpstrInitialDir = dir; - ofn.lpstrTitle = 0; - ofn.Flags = OFN_PATHMUSTEXIST | OFN_EXPLORER | OFN_HIDEREADONLY; - ofn.lpstrDefExt = 0; - ofn.lCustData = 0; - ofn.lpfnHook = 0; - ofn.lpTemplateName = 0; - - if(!GetSaveFileName(&ofn)) - return; - SetDlgItemText(hSettingWnd, IDC_EDIT_OUTPUT_FILE, pFileName); -} - -static BOOL CALLBACK SettingWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) -{ - switch(uMess) - { - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case IDCANCEL: - ShowWindow(hSettingWnd, SW_HIDE); - break; - case IDOK: - w32g_send_rc(RC_EXT_APPLY_SETTING, 0); - ShowWindow(hSettingWnd, SW_HIDE); - break; - case IDDEFAULT: - SettingWndSetup(st_default); - break; - case IDC_COMBO_OUTPUT_MODE: { - int selected, output_enabled; - selected = ComboBox_GetCurSel(hComboOutput); - output_enabled = w32g_play_mode_list[selected].play_mode->id_character != 'd'; - EnableWindow(hOutputEdit, output_enabled); - EnableWindow(hOutputRefBtn, output_enabled); - } - break; - case IDC_BUTTON_REF: - DlgSelectOutputFile(); - break; - } - break; - - case WM_CLOSE: - ShowWindow(hSettingWnd, SW_HIDE); - break; - } - return 0; -} - -int w32g_msg_box(char *message, char *title, int type) +void w32g_show_console(void) { - return MessageBox(hMainWnd, message, title, type); + ShowWindow(hConsoleWnd, SW_SHOW); + SendDlgItemMessage(hMainWnd, IDC_TOOLBARWINDOW_SUBWND, + TB_CHECKBUTTON, IDM_CONSOLE, (LPARAM)MAKELONG(TRUE, 0)); } diff -ruN TiMidity++-2.4.1/interface/w32g_ini.c TiMidity++-2.5.0/interface/w32g_ini.c --- TiMidity++-2.4.1/interface/w32g_ini.c Sat Jul 31 22:07:12 1999 +++ TiMidity++-2.5.0/interface/w32g_ini.c Wed Aug 25 13:20:44 1999 @@ -31,7 +31,10 @@ #include "timidity.h" #include "common.h" #include "output.h" +#include "instrum.h" +#include "playmidi.h" #include "w32g.h" +#include "w32g_utl.h" #if MAX_CHANNELS > 32 /* FIXME */ #error "MAX_CHANNELS > 32 is not supported Windows GUI version" @@ -103,6 +106,8 @@ IniGetKeyInt(INI_SEC_PLAYER,"SoundSpecWndFlag",&(sp->SoundSpecWndFlag)); IniGetKeyInt(INI_SEC_PLAYER,"SubWindowMax",&(sp->SubWindowMax)); IniGetKeyStringN(INI_SEC_PLAYER,"ConfigFile",sp->ConfigFile,MAXPATH + 32); + if(!sp->ConfigFile[0]) + strcpy(sp->ConfigFile, W32G_TIMIDITY_CFG); IniGetKeyStringN(INI_SEC_PLAYER,"PlaylistFile",sp->PlaylistFile,MAXPATH + 32); IniGetKeyStringN(INI_SEC_PLAYER,"PlaylistHistoryFile",sp->PlaylistHistoryFile,MAXPATH + 32); IniGetKeyStringN(INI_SEC_PLAYER,"MidiFileOpenDir",sp->MidiFileOpenDir,MAXPATH + 32); @@ -126,6 +131,10 @@ IniGetKeyInt(INI_SEC_PLAYER,"TraceGraphicFlag",&(sp->TraceGraphicFlag)); IniGetKeyInt(INI_SEC_PLAYER,"DocMaxSize",&(sp->DocMaxSize)); IniGetKeyStringN(INI_SEC_PLAYER,"DocFileExt",sp->DocFileExt,256); + IniGetKeyInt(INI_SEC_PLAYER,"PlayerLanguage",&(sp->PlayerLanguage)); + IniGetKeyInt(INI_SEC_PLAYER,"DocWndIndependent",&(sp->DocWndIndependent)); + IniGetKeyInt(INI_SEC_PLAYER,"SeachDirRecursive",&(sp->SeachDirRecursive)); + IniGetKeyInt(INI_SEC_PLAYER,"IniFileAutoSave",&(sp->IniFileAutoSave)); /* [TIMIDITY] */ IniGetKeyInt32(INI_SEC_TIMIDITY,"amplification",&(st->amplification)); @@ -164,6 +173,7 @@ IniGetKeyStringN(INI_SEC_TIMIDITY,"opt_playmode",st->opt_playmode,sizeof(st->opt_playmode)); IniGetKeyStringN(INI_SEC_TIMIDITY,"OutputName",st->OutputName,sizeof(st->OutputName)); IniGetKeyInt(INI_SEC_TIMIDITY,"voices",&(st->voices)); + IniGetKeyInt(INI_SEC_TIMIDITY,"auto_reduce_polyphony",&(st->auto_reduce_polyphony)); IniGetKeyInt32(INI_SEC_TIMIDITY,"quietchannels",(int32 *)&(st->quietchannels)); IniGetKeyStringN(INI_SEC_TIMIDITY,"opt_qsize",st->opt_qsize,sizeof(st->opt_qsize)); IniGetKeyInt32(INI_SEC_TIMIDITY,"modify_release",&(st->modify_release)); @@ -176,6 +186,8 @@ #if defined(__W32__) && defined(SMFCONV) IniGetKeyInt(INI_SEC_TIMIDITY,"opt_rcpcv_dll",&(st->opt_rcpcv_dll)); #endif + IniGetKeyInt(INI_SEC_TIMIDITY,"data_block_time",&(st->data_block_time)); + IniGetKeyInt(INI_SEC_TIMIDITY,"data_block_num",&(st->data_block_num)); } void @@ -198,7 +210,11 @@ IniPutKeyInt(INI_SEC_PLAYER,"WrdWndFlag",&(sp->WrdWndFlag)); IniPutKeyInt(INI_SEC_PLAYER,"SoundSpecWndFlag",&(sp->SoundSpecWndFlag)); IniPutKeyInt(INI_SEC_PLAYER,"SubWindowMax",&(sp->SubWindowMax)); - IniPutKeyStringN(INI_SEC_PLAYER,"ConfigFile",sp->ConfigFile,MAXPATH + 32); +//#### +// if(sp->ConfigFile[0]) + IniPutKeyStringN(INI_SEC_PLAYER,"ConfigFile",sp->ConfigFile,MAXPATH + 32); +// else +// IniPutKeyStringN(INI_SEC_PLAYER,"ConfigFile",W32G_TIMIDITY_CFG,MAXPATH + 32); IniPutKeyStringN(INI_SEC_PLAYER,"PlaylistFile",sp->PlaylistFile,MAXPATH + 32); IniPutKeyStringN(INI_SEC_PLAYER,"PlaylistHistoryFile",sp->PlaylistHistoryFile,MAXPATH + 32); IniPutKeyStringN(INI_SEC_PLAYER,"MidiFileOpenDir",sp->MidiFileOpenDir,MAXPATH + 32); @@ -222,6 +238,10 @@ IniPutKeyInt(INI_SEC_PLAYER,"TraceGraphicFlag",&(sp->TraceGraphicFlag)); IniPutKeyInt(INI_SEC_PLAYER,"DocMaxSize",&(sp->DocMaxSize)); IniPutKeyStringN(INI_SEC_PLAYER,"DocFileExt",sp->DocFileExt,256); + IniPutKeyInt(INI_SEC_PLAYER,"PlayerLanguage",&(sp->PlayerLanguage)); + IniPutKeyInt(INI_SEC_PLAYER,"DocWndIndependent",&(sp->DocWndIndependent)); + IniPutKeyInt(INI_SEC_PLAYER,"SeachDirRecursive",&(sp->SeachDirRecursive)); + IniPutKeyInt(INI_SEC_PLAYER,"IniFileAutoSave",&(sp->IniFileAutoSave)); /* [TIMIDITY] */ @@ -260,6 +280,7 @@ IniPutKeyStringN(INI_SEC_TIMIDITY,"opt_playmode",st->opt_playmode,sizeof(st->opt_playmode)); IniPutKeyStringN(INI_SEC_TIMIDITY,"OutputName",st->OutputName,sizeof(st->OutputName)); IniPutKeyInt(INI_SEC_TIMIDITY,"voices",&(st->voices)); + IniPutKeyInt(INI_SEC_TIMIDITY,"auto_reduce_polyphony",&(st->auto_reduce_polyphony)); IniPutKeyInt32(INI_SEC_TIMIDITY,"quietchannels",(int32 *)&(st->quietchannels)); IniPutKeyStringN(INI_SEC_TIMIDITY,"opt_qsize",st->opt_qsize,sizeof(st->opt_qsize)); IniPutKeyInt32(INI_SEC_TIMIDITY,"modify_release",&(st->modify_release)); @@ -273,5 +294,7 @@ #if defined(__W32__) && defined(SMFCONV) IniPutKeyInt(INI_SEC_TIMIDITY,"opt_rcpcv_dll",&(st->opt_rcpcv_dll)); #endif + IniPutKeyInt(INI_SEC_TIMIDITY,"data_block_time",&(st->data_block_time)); + IniPutKeyInt(INI_SEC_TIMIDITY,"data_block_num",&(st->data_block_num)); + w32g_has_ini_file = 1; } - diff -ruN TiMidity++-2.4.1/interface/w32g_panel.c TiMidity++-2.5.0/interface/w32g_panel.c --- TiMidity++-2.4.1/interface/w32g_panel.c Sun Aug 1 01:29:20 1999 +++ TiMidity++-2.5.0/interface/w32g_panel.c Thu Jan 1 09:00:00 1970 @@ -1,489 +0,0 @@ -/* - TiMidity++ -- MIDI to WAVE converter and player - Copyright (C) 1999 Masanao Izumo - Copyright (C) 1995 Tuukka Toivonen - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - - w32g_i.c: by Daisuke Aoki - Masanao Izumo -*/ - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif /* HAVE_CONFIG_H */ -#include -#include -#include -#include "timidity.h" -#include "common.h" -#include "w32g.h" -#include "w32g_res.h" - -#define PanelWndClassName "TiMidity Panel" - -#define TM_PANEL_XMAX 350 -#define TM_PANEL_YMAX 100 - -#define TMP_DONOT 1 -#define TMP_PREPARE 2 -#define TMP_DONE 3 - -#define TMP_SPACE 2 -#define TMP_TITLE_CHAR_SIZE 12 -#define TMP_FILE_CHAR_SIZE 10 -#define TMP_MISCH_CHAR_SIZE 9 -#define TMP_MISCW_CHAR_SIZE 7 -#define TMP_MISC_CHAR_SIZE 12 -#define TMP_3L_CSIZE TMP_MISC_CHAR_SIZE -#define TMP_3L_CSSIZE TMP_MISCH_CHAR_SIZE -#define TMP_3L_SPACE 1 -#define TMP_4L_CSIZE TMP_MISC_CHAR_SIZE -#define TMP_4L_CSSIZE TMP_MISCH_CHAR_SIZE -#define TMP_4L_SPACE 1 - -static HFONT hTitleFont = NULL; -static HFONT hFileFont = NULL; -static HFONT hMiscHFont = NULL; -static HFONT hMiscFont = NULL; - -extern char *PlayerFont; - -#define TMP_FONT_SIZE 12 -#define TMP_FONTSMALL_SIZE 10 -static struct { - HWND hwnd; - HDC hdc; - HDC hmdc; - - RECT rcMe; - RECT rcTitleH; - RECT rcTitle; - RECT rcFileH; - RECT rcFile; - RECT rcTimeH; - RECT rcTime; - RECT rcVoicesH; - RECT rcVoices; - RECT rcMasterVolume; - RECT rcMasterVolumeH; - RECT rcListH; - RECT rcList; - - int TimeDone; - int VoicesDone; - int MasterVolumeDone; - int ListDone; - - int cur_time; - int total_time; - int cur_voices; - int master_volume; -} TmPanel; - -static int tm_refresh_flag = 0; - -static LRESULT CALLBACK PanelWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); -static void TmPanelInit(HWND hwnd); -static void TmPanelEnd(HWND hwnd); -static void TmPanelInitFont(void); -static void TmPanelClear(void); -static void TmPanelFullReset(void); -static void TmPanelRect(RECT *rc, int color); -static void TmPanelRepaint(HWND hwnd); -static void TmPanelUpdate(void); - -void w32g_init_panel(HWND hwnd) -{ - WNDCLASS wndclass; - HWND hPanelWnd; - - memset(&TmPanel, 0, sizeof(TmPanel)); - TmPanelInitFont(); - - wndclass.style = CS_HREDRAW | CS_VREDRAW; - wndclass.lpfnWndProc = PanelWndProc; - wndclass.cbClsExtra = 0; - wndclass.cbWndExtra = 0; - wndclass.hInstance = hInst; - wndclass.hIcon = NULL; - wndclass.hCursor = LoadCursor(0,IDC_ARROW); - wndclass.hbrBackground = (HBRUSH)(COLOR_SCROLLBAR + 1); - wndclass.lpszMenuName = NULL; - wndclass.lpszClassName = PanelWndClassName; - RegisterClass(&wndclass); - hPanelWnd = CreateWindowEx(0, PanelWndClassName, 0, WS_CHILD, - CW_USEDEFAULT, 0, TM_PANEL_XMAX, TM_PANEL_YMAX, - GetDlgItem(hwnd, IDC_RECT_PANEL), 0 ,hInst, 0); - ShowWindow(hPanelWnd,SW_SHOW); - UpdateWindow(hPanelWnd); -} - -static LRESULT CALLBACK PanelWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) -{ - switch (uMess) - { - case WM_CREATE: - TmPanelInit(hwnd); - break; - case WM_DESTROY: - TmPanelEnd(hwnd); - break; - - case WM_PAINT: - TmPanelRepaint(hwnd); - break; - default: - return DefWindowProc(hwnd,uMess,wParam,lParam) ; - } - return 0L; -} - -static int TmPanelTextLength(HFONT hfont, char *text) -{ - SIZE size; - SelectObject(TmPanel.hmdc, hfont); - SetTextAlign(TmPanel.hmdc, TA_LEFT | TA_TOP | TA_NOUPDATECP); - GetTextExtentPoint32(TmPanel.hmdc, text, strlen(text), &size); - return size.cx; -} - -static void TmPanelInit(HWND hwnd) -{ - int i, top, bottom; - RECT rc; - HBITMAP hbitmap; - HWND hParentWnd; - - TmPanel.hwnd = hwnd; - hParentWnd = GetParent(TmPanel.hwnd); - GetClientRect(hParentWnd, &rc); - MoveWindow(TmPanel.hwnd, 0, 0, rc.right-rc.left, rc.bottom-rc.top, FALSE); - TmPanel.hdc = GetDC(TmPanel.hwnd); - hbitmap = CreateCompatibleBitmap(TmPanel.hdc, - TM_PANEL_XMAX, TM_PANEL_YMAX); - TmPanel.hmdc = CreateCompatibleDC(TmPanel.hdc); - SelectObject(TmPanel.hmdc, hbitmap); - GetClientRect(TmPanel.hwnd, &rc); - TmPanel.rcMe = rc; - TmPanel.rcTitle.left = TmPanel.rcMe.left+TMP_SPACE; - TmPanel.rcTitle.top = TmPanel.rcMe.top+TMP_SPACE; - TmPanel.rcTitle.right = TmPanel.rcMe.right-TMP_SPACE; - TmPanel.rcTitle.bottom = TmPanel.rcTitle.top+TMP_TITLE_CHAR_SIZE+TMP_SPACE; - TmPanel.rcFile.left = TmPanel.rcMe.left+TMP_SPACE; - TmPanel.rcFile.top = TmPanel.rcTitle.bottom+TMP_SPACE; - TmPanel.rcFile.right = TmPanel.rcMe.right-TMP_SPACE; - TmPanel.rcFile.bottom = TmPanel.rcFile.top+TMP_FILE_CHAR_SIZE+TMP_SPACE; - top = TmPanel.rcFile.bottom+TMP_SPACE; - bottom = top + TMP_3L_CSIZE; - i = (TMP_3L_CSIZE - TMP_3L_CSSIZE)/2; - TmPanel.rcTimeH.left = TmPanel.rcMe.left + TMP_SPACE; - TmPanel.rcTimeH.top = top + i; - TmPanel.rcTimeH.right = TmPanel.rcTimeH.left + TmPanelTextLength(hMiscHFont, "TIME"); - TmPanel.rcTimeH.bottom = bottom - i; - TmPanel.rcTime.left = TmPanel.rcTimeH.right + 3; - TmPanel.rcTime.top = top; - TmPanel.rcTime.right = TmPanel.rcTime.left + TmPanelTextLength(hMiscFont, "00:00:00/00:00:00"); - TmPanel.rcTime.bottom = bottom; - TmPanel.rcVoicesH.left = TmPanel.rcTime.right + 4; - TmPanel.rcVoicesH.top = top + i; - TmPanel.rcVoicesH.right = TmPanel.rcVoicesH.left + TmPanelTextLength(hMiscHFont, "VOICES"); - TmPanel.rcVoicesH.bottom = bottom - i; - TmPanel.rcVoices.left = TmPanel.rcVoicesH.right + TMP_3L_SPACE; - TmPanel.rcVoices.top = top; - TmPanel.rcVoices.right = TmPanel.rcVoices.left + TmPanelTextLength(hMiscFont, "000/000"); - TmPanel.rcVoices.bottom = bottom; - TmPanel.rcMasterVolumeH.left = TmPanel.rcVoices.right + 4; - TmPanel.rcMasterVolumeH.top = top + i; - TmPanel.rcMasterVolumeH.right = TmPanel.rcMasterVolumeH.left + TMP_MISCW_CHAR_SIZE*4; - TmPanel.rcMasterVolumeH.bottom = bottom - i; - TmPanel.rcMasterVolume.left = TmPanel.rcMasterVolumeH.right + 3; - TmPanel.rcMasterVolume.top = top; - TmPanel.rcMasterVolume.right = TmPanel.rcMasterVolume.left + TmPanelTextLength(hMiscFont, "000%"); - TmPanel.rcMasterVolume.bottom = bottom; - top = TmPanel.rcTime.bottom + TMP_SPACE; - bottom = top + TMP_4L_CSIZE; - i = (TMP_4L_CSIZE - TMP_4L_CSSIZE)/2; - TmPanel.rcListH.left = TmPanel.rcMe.left + TMP_SPACE; - TmPanel.rcListH.top = top + i; - TmPanel.rcListH.right = TmPanel.rcListH.left + TmPanelTextLength(hMiscHFont, "LIST"); - TmPanel.rcListH.bottom = bottom - i; - TmPanel.rcList.left = TmPanel.rcListH.right + 3; - TmPanel.rcList.top = top; - TmPanel.rcList.right = TmPanel.rcList.left + TmPanelTextLength(hMiscFont, "0000/0000"); - TmPanel.rcList.bottom = bottom; - TmPanelFullReset(); - TmPanelUpdate(); -} - -static void TmPanelEnd(HWND hwnd) -{ - ReleaseDC(TmPanel.hwnd, TmPanel.hdc); - TmPanel.hdc = 0; -} - -static void TmPanelFullReset(void) -{ - TmPanelClear(); - TmPanel.TimeDone = TMP_DONOT; - TmPanel.VoicesDone = TMP_DONOT; - TmPanel.MasterVolumeDone = TMP_DONOT; - TmPanelRect(&TmPanel.rcTitle, TMCC_FORE_HALF); - TmPanelRect(&TmPanel.rcFile, TMCC_FORE_HALF); - TmPanel.cur_time = -1; - TmPanel.total_time = -1; - TmPanel.cur_voices = -1; - TmPanel.master_volume = -1; -} - -// Font Setting -static void TmPanelInitFont(void) -{ - if(hTitleFont != NULL) - DeleteObject(hTitleFont); - hTitleFont = CreateFont(TMP_TITLE_CHAR_SIZE, 0, 0, 0, FW_DONTCARE, - FALSE, FALSE, FALSE, DEFAULT_CHARSET, - OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, - DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, - PlayerFont); - if(hFileFont != NULL) - DeleteObject(hFileFont); - hFileFont = CreateFont(TMP_FILE_CHAR_SIZE, 0, 0, 0, FW_DONTCARE, - FALSE, FALSE, FALSE, DEFAULT_CHARSET, - OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, - DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, - PlayerFont); - if(hMiscHFont != NULL) - DeleteObject(hMiscHFont); - hMiscHFont = CreateFont(TMP_MISCH_CHAR_SIZE, 0, 0, 0, FW_BOLD, FALSE, - FALSE,FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, - CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, - DEFAULT_PITCH | FF_DONTCARE, PlayerFont); - if(hMiscFont != NULL) - DeleteObject(hMiscFont); - hMiscFont = CreateFont(TMP_MISC_CHAR_SIZE, 0, 0, 0, FW_BOLD, FALSE, FALSE, - FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, - CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, - DEFAULT_PITCH | FF_DONTCARE, PlayerFont); -} - -static void TmPanelClear(void) -{ - TmPanelRect(&TmPanel.rcMe, TMCC_BACK); -} - -static void TmPanelRepaint(HWND hwnd) -{ - HDC hdc; - PAINTSTRUCT ps; - - hdc = BeginPaint(TmPanel.hwnd, &ps); - BitBltRect(hdc, TmPanel.hmdc, &ps.rcPaint); - EndPaint(TmPanel.hwnd, &ps); -} - -static void TmPanelText(RECT *r, HFONT hfont, int fg, int bg, - char *buffer, BOOL bitblt) -{ - HGDIOBJ hgdiobj; - - if(!TmPanel.hdc) - return; - - hgdiobj = SelectObject(TmPanel.hmdc, hfont); - SetTextColor(TmPanel.hmdc, TmCc(fg)); - SetBkColor(TmPanel.hmdc, TmCc(bg)); - SetTextAlign(TmPanel.hmdc, TA_LEFT | TA_TOP | TA_NOUPDATECP); - ExtTextOut(TmPanel.hmdc, r->left, r->top, ETO_CLIPPED, r, - buffer, strlen(buffer), NULL); - if(bitblt) - BitBltRect(TmPanel.hdc, TmPanel.hmdc, r); -} - -static void TmPanelUpdate(void) -{ - char buffer[32]; - extern int voices; - - if(TmPanel.VoicesDone == TMP_PREPARE) - { - sprintf(buffer,"%03d/%03d", TmPanel.cur_voices, voices); - TmPanelText(&TmPanel.rcVoices, hMiscFont, TMCC_FORE, TMCC_FORE_HALF, - buffer, TRUE); - TmPanel.VoicesDone = TMP_DONE; - } - - if(TmPanel.TimeDone == TMP_PREPARE) - { - int ch, cm, cs; - int th, tm, ts; - int t; - - t = TmPanel.cur_time; - ch = t / 60 / 60; - t %= 60*60; - cm = t / 60; - t %= 60; - cs = t; - - t = TmPanel.total_time; - th = t / 60 / 60; - t %= 60*60; - tm = t / 60; - t %= 60; - ts = t; - - sprintf(buffer,"%02d:%02d:%02d/%02d:%02d:%02d", - ch, cm, cs, th, tm, ts); - TmPanelText(&TmPanel.rcTime, hMiscFont, TMCC_FORE, TMCC_FORE_HALF, - buffer, TRUE); - TmPanel.TimeDone = TMP_DONE; - } - - if(TmPanel.MasterVolumeDone == TMP_PREPARE) - { - sprintf(buffer, "%03d%%", TmPanel.master_volume); - TmPanelText(&TmPanel.rcMasterVolume, hMiscFont, - TMCC_FORE, TMCC_FORE_HALF, buffer, TRUE); - TmPanel.MasterVolumeDone = TMP_DONE; - } - - if(TmPanel.ListDone == TMP_PREPARE) - { - int playlist_selected, playlist_nfiles; - w32g_get_playlist_index(&playlist_selected, &playlist_nfiles, NULL); - if(playlist_nfiles == 0) - strcpy(buffer,"0000/0000"); - else - sprintf(buffer,"%04d/%04d", - playlist_selected + 1, playlist_nfiles); - TmPanelText(&TmPanel.rcList, hMiscFont, TMCC_FORE, TMCC_FORE_HALF, - buffer, TRUE); - TmPanel.ListDone = TMP_DONE; - } -} - -static void TmPanelRect(RECT *rc, int color) -{ - TmFillRect(TmPanel.hmdc, rc, color); -} - -void TmPanelRefresh(void) -{ - if(!TmPanel.hdc) - return; - if(tm_refresh_flag) - { - TmPanelUpdate(); - tm_refresh_flag = 0; - } -} - -void TmPanelStartToLoad(char *filename) -{ - char *title; - extern char *get_midi_title(char *); - extern int amplification; - - title = get_midi_title(filename); - TmPanelFullReset(); - /* Title */ - if(title) - TmPanelText(&TmPanel.rcTitle, hTitleFont, TMCC_FORE, TMCC_FORE_HALF, - title, FALSE); - - /* File name */ - TmPanelText(&TmPanel.rcFile, hFileFont, TMCC_FORE, TMCC_FORE_HALF, - filename, FALSE); - - /* - * Labels - */ - - /* "TIME" */ - TmPanelText(&TmPanel.rcTimeH, hMiscHFont, TMCC_FORE, TMCC_BACK, - "TIME", FALSE); - - /* "VOICES" */ - TmPanelText(&TmPanel.rcVoicesH, hMiscHFont, TMCC_FORE, TMCC_BACK, - "VOICES", FALSE); - - /* "M.Vol" */ - TmPanelText(&TmPanel.rcMasterVolumeH, hMiscHFont, - TMCC_FORE, TMCC_BACK, - "M.Vol", FALSE); - - /* "LIST" */ - TmPanelText(&TmPanel.rcListH, hMiscHFont, TMCC_FORE, TMCC_BACK, - "LIST", FALSE); - - BitBltRect(TmPanel.hdc, TmPanel.hmdc, &TmPanel.rcMe); - - TmPanel.cur_voices = 0; - TmPanel.master_volume = amplification; - TmPanel.VoicesDone = TMP_PREPARE; - TmPanel.MasterVolumeDone = TMP_PREPARE; - TmPanel.ListDone = TMP_PREPARE; - TmPanelRefresh(); - tm_refresh_flag = 0; -} - -void TmPanelStartToPlay(int total_sec) -{ - TmPanel.cur_time = 0; - TmPanel.total_time = total_sec; - TmPanel.TimeDone = TMP_PREPARE; - tm_refresh_flag = 1; -} - -void TmPanelSetVoices(int v) -{ - if(TmPanel.cur_voices != v) - { - TmPanel.cur_voices = v; - TmPanel.VoicesDone = TMP_PREPARE; - tm_refresh_flag = 1; - } -} - -void TmPanelSetTime(int sec) -{ - if(TmPanel.cur_time != sec) - { - TmPanel.cur_time = sec; - TmPanel.TimeDone = TMP_PREPARE; - tm_refresh_flag = 1; - } -} - -void TmPanelSetMasterVol(int v) -{ - if(TmPanel.master_volume != v) - { - TmPanel.master_volume = v; - TmPanel.MasterVolumeDone = TMP_PREPARE; - tm_refresh_flag = 1; - if(!w32g_play_active) - TmPanelRefresh(); - } -} - -void TmPanelUpdateList(void) -{ - TmPanel.ListDone = TMP_PREPARE; - tm_refresh_flag = 1; - if(!w32g_play_active) - TmPanelRefresh(); -} diff -ruN TiMidity++-2.4.1/interface/w32g_playlist.c TiMidity++-2.5.0/interface/w32g_playlist.c --- TiMidity++-2.4.1/interface/w32g_playlist.c Sun Aug 1 01:25:46 1999 +++ TiMidity++-2.5.0/interface/w32g_playlist.c Wed Aug 25 11:22:06 1999 @@ -51,21 +51,30 @@ static HWND playlist_box(void) { - extern HWND hListWnd; if(!hListWnd) return 0; return GetDlgItem(hListWnd, IDC_LISTBOX_PLAYLIST); } -static void w32g_set_playlist(PlayListEntry *entry, char *filename) +static int w32g_add_playlist1(char *filename, int uniq, int refine) { - entry->filename = safe_strdup(filename); - entry->title = get_midi_title(filename); - entry->info = get_midi_file_info(filename, 1); -} + PlayListEntry *entry; + char *title; + struct midi_file_info *info; + + if(uniq) + { + int i; + for(i = 0; i < playlist.nfiles; i++) + if(strcasecmp(filename, playlist.list[i].filename) == 0) + return 0; + } + + title = get_midi_title(filename); + info = get_midi_file_info(filename, 1); + if(refine && info->format < 0) + return 0; -static void w32g_add_playlist1(char *filename) -{ if(playlist.allocated == 0) { playlist.allocated = 32; @@ -79,44 +88,87 @@ playlist.allocated * sizeof(PlayListEntry)); } - w32g_set_playlist(&playlist.list[playlist.nfiles++], filename); + + entry = &playlist.list[playlist.nfiles]; + entry->filename = safe_strdup(filename); + entry->title = title; + entry->info = info; + playlist.nfiles++; + return 1; } -void w32g_add_playlist(int nfiles, char **files, int expand_flag) +int w32g_add_playlist(int nfiles, char **files, int expand_flag, + int uniq, int refine) { - char **new_files; - int i, new_nfiles; + char **new_files1; + char **new_files2; + int i, n; + extern int SeachDirRecursive; + extern char **FilesExpandDir(int *, char **); if(nfiles == 0) - return; - new_nfiles = nfiles; + return 0; + + if(SeachDirRecursive) + { +//printf("## dir expand: %d\n"); + new_files1 = FilesExpandDir(&nfiles, files); + if(new_files1 == NULL) + return 0; + expand_flag = 1; +//printf("## dir expand done %d\n", nfiles); + } + else + new_files1 = files; + if(!expand_flag) - new_files = files; + new_files2 = new_files1; else { - new_files = expand_file_archives(files, &new_nfiles); - if(new_nfiles == 0) - return; +//printf("## expand...%d\n", nfiles); + new_files2 = expand_file_archives(new_files1, &nfiles); +//printf("## expand...done (%d)\n", nfiles); + if(new_files2 == NULL) + { + if(new_files1 != files) + { + free(new_files1[0]); + free(new_files1); + } + } } - for(i = 0; i < new_nfiles; i++) - w32g_add_playlist1(new_files[i]); +//printf("## checking files...\n", nfiles); + n = 0; + for(i = 0; i < nfiles; i++) + n += w32g_add_playlist1(new_files2[i], uniq, refine); +//printf("## checking files...done\n", nfiles); - if(new_files != files) + if(new_files2 != new_files1) + { + free(new_files2[0]); + free(new_files2); + } + if(new_files1 != files) { - free(new_files[0]); - free(new_files); + free(new_files1[0]); + free(new_files1); } - w32g_update_playlist(); +//printf("## update...\n", nfiles); + if(n > 0) + w32g_update_playlist(); +//printf("## update...done\n", nfiles); + return n; } -int w32g_next_playlist(void) +int w32g_next_playlist(int skip_invalid_file) { while(playlist.selected + 1 < playlist.nfiles) { playlist.selected++; - if(playlist.list[playlist.selected].info->file_type != IS_ERROR_FILE) + if(!skip_invalid_file || + playlist.list[playlist.selected].info->file_type != IS_ERROR_FILE) { w32g_update_playlist(); return 1; @@ -125,12 +177,13 @@ return 0; } -int w32g_prev_playlist(void) +int w32g_prev_playlist(int skip_invalid_file) { while(playlist.selected > 0) { playlist.selected--; - if(playlist.list[playlist.selected].info->file_type != IS_ERROR_FILE) + if(!skip_invalid_file || + playlist.list[playlist.selected].info->file_type != IS_ERROR_FILE) { w32g_update_playlist(); return 1; @@ -139,27 +192,33 @@ return 0; } -void w32g_first_playlist(void) +void w32g_first_playlist(int skip_invalid_file) { playlist.selected = 0; - while(playlist.selected < playlist.nfiles && - playlist.list[playlist.selected].info->file_type == IS_ERROR_FILE) - playlist.selected++; - if(playlist.selected == playlist.nfiles) - playlist.selected = 0; + if(skip_invalid_file) + { + while(playlist.selected < playlist.nfiles && + playlist.list[playlist.selected].info->file_type == IS_ERROR_FILE) + playlist.selected++; + if(playlist.selected == playlist.nfiles) + playlist.selected = 0; + } w32g_update_playlist(); } -int w32g_goto_playlist(int num) +int w32g_goto_playlist(int num, int skip_invalid_file) { if(0 <= num && num < playlist.nfiles) { playlist.selected = num; - while(playlist.selected < playlist.nfiles && - playlist.list[playlist.selected].info->file_type == IS_ERROR_FILE) - playlist.selected++; - if(playlist.selected == playlist.nfiles) - playlist.selected = num; + if(skip_invalid_file) + { + while(playlist.selected < playlist.nfiles && + playlist.list[playlist.selected].info->file_type == IS_ERROR_FILE) + playlist.selected++; + if(playlist.selected == playlist.nfiles) + playlist.selected = num; + } w32g_update_playlist(); return 1; } @@ -171,27 +230,25 @@ return playlist.nfiles == 0; } +#if 0 char *w32g_curr_playlist(void) { if(!playlist.nfiles) return NULL; return playlist.list[playlist.selected].filename; } +#endif void w32g_update_playlist(void) { - int i, top_index, cur; + int i, cur, modified; HWND hListBox; - hListBox = playlist_box(); - if(!hListBox) + if(!(hListBox = playlist_box())) return; - top_index = ListBox_GetTopIndex(hListBox); - if(top_index != 0) - ListBox_SetTopIndex(hListBox, 0); - cur = ListBox_GetCurSel(hListBox); + modified = 0; for(i = 0; i < playlist.nfiles; i++) { char *filename, *title, *item1, *item2; @@ -219,15 +276,19 @@ { ListBox_DeleteString(hListBox, i); ListBox_InsertString(hListBox, i, item1); + modified = 1; } reuse_mblock(&tmpbuffer); } - if(cur < 0) - cur = 0; - else if(cur >= playlist.nfiles - 1) - cur = playlist.nfiles - 1; - ListBox_SetCurSel(hListBox, cur); + if(modified) + { + if(cur < 0) + cur = playlist.selected; + else if(cur >= playlist.nfiles - 1) + cur = playlist.nfiles - 1; + ListBox_SetCurSel(hListBox, cur); + } } void w32g_get_playlist_index(int *selected, int *nfiles, int *cursel) @@ -247,14 +308,16 @@ } } -void w32g_delete_playlist(int pos) +int w32g_delete_playlist(int pos) { int i; HWND hListBox; - hListBox = playlist_box(); - if(!hListBox) - return; + if(!(hListBox = playlist_box())) + return 0; + + if(pos >= playlist.nfiles) + return 0; ListBox_DeleteString(hListBox, pos); free(playlist.list[pos].filename); @@ -274,15 +337,23 @@ pos--; ListBox_SetCurSel(hListBox, pos); } + return 1; +} + +int w32g_ismidi_playlist(int n) +{ + if(n < 0 || n >= playlist.nfiles) + return 0; + return playlist.list[n].info->format >= 0; } -int w32g_valid_playlist(void) +int w32g_nvalid_playlist(void) { int i, n; n = 0; for(i = 0; i < playlist.nfiles; i++) - if(playlist.list[i].info->file_type != IS_ERROR_FILE) + if(w32g_ismidi_playlist(i)) n++; return n; } @@ -290,8 +361,185 @@ void w32g_setcur_playlist(void) { HWND hListBox; - hListBox = playlist_box(); - if(!hListBox) + if(!(hListBox = playlist_box())) return; ListBox_SetCurSel(hListBox, playlist.selected); +} + +int w32g_uniq_playlist(int *is_selected_removed) +{ + int nremoved; + int i, n, j1, j2, cursel; + HWND hListBox; + + hListBox = playlist_box(); + if(hListBox) + cursel = ListBox_GetCurSel(hListBox); + else + cursel = -1; + + if(is_selected_removed != NULL) + *is_selected_removed = 0; + nremoved = 0; + n = playlist.nfiles; + for(i = 0; i < n - 1; i++) + { + int save_n; + + /* remove list[i] from list[i+1 .. n-1] */ + j1 = j2 = i + 1; + save_n = n; + while(j2 < save_n) /* j1 <= j2 */ + { + if(strcasecmp(playlist.list[i].filename, + playlist.list[j2].filename) == 0) + { + nremoved++; + n--; + free(playlist.list[j2].filename); + if(j2 == playlist.selected && + is_selected_removed != NULL && + !*is_selected_removed) + { + *is_selected_removed = 1; + playlist.selected = j1; + } + if(j2 < playlist.selected) + playlist.selected--; + if(j2 < cursel) + cursel--; + } + else + { + playlist.list[j1] = playlist.list[j2]; + j1++; + } + j2++; + } + } + if(nremoved) + { + for(i = 0; i < nremoved; i++) + ListBox_DeleteString(hListBox, --playlist.nfiles); + if(cursel >= 0) + ListBox_SetCurSel(hListBox, cursel); + w32g_update_playlist(); + } + return nremoved; +} + +int w32g_refine_playlist(int *is_selected_removed) +{ + int nremoved; + int i, j1, j2, cursel; + HWND hListBox; + + hListBox = playlist_box(); + if(hListBox) + cursel = ListBox_GetCurSel(hListBox); + else + cursel = -1; + + if(is_selected_removed != NULL) + *is_selected_removed = 0; + nremoved = 0; + j1 = j2 = 0; + while(j2 < playlist.nfiles) /* j1 <= j2 */ + { + if(playlist.list[j2].info->format < 0) + { + nremoved++; + free(playlist.list[j2].filename); + if(j2 == playlist.selected && + is_selected_removed != NULL && + !*is_selected_removed) + { + *is_selected_removed = 1; + playlist.selected = j1; + } + if(j2 < playlist.selected) + playlist.selected--; + if(j2 < cursel) + cursel--; + } + else + { + playlist.list[j1] = playlist.list[j2]; + j1++; + } + j2++; + } + if(nremoved) + { + for(i = 0; i < nremoved; i++) + ListBox_DeleteString(hListBox, --playlist.nfiles); + if(cursel >= playlist.nfiles) + cursel = playlist.nfiles - 1; + if(cursel >= 0) + ListBox_SetCurSel(hListBox, cursel); + w32g_update_playlist(); + } + return nremoved; +} + +void w32g_clear_playlist(void) +{ + HWND hListBox; + + hListBox = playlist_box(); + while(playlist.nfiles > 0) + { + playlist.nfiles--; + free(playlist.list[playlist.nfiles].filename); + if(hListBox) + ListBox_DeleteString(hListBox, playlist.nfiles); + } +} + +void w32g_rotate_playlist(int dest) +{ + int i, i1, i2; + HWND hListBox; + PlayListEntry save; + + if(playlist.nfiles == 0) + return; + if(!(hListBox = playlist_box())) + return; + + i1 = ListBox_GetCurSel(hListBox); + i2 = playlist.nfiles - 1; + if(i1 >= i2) + return; + + if(dest > 0) + { + save = playlist.list[i2]; + for(i = i2; i > i1; i--) /* i: i2 -> i1 */ + playlist.list[i] = playlist.list[i - 1]; + playlist.list[i] = save; + if(playlist.selected == i2) + playlist.selected = i1; + else if(i1 <= playlist.selected && playlist.selected < i2) + playlist.selected++; + } + else + { + save = playlist.list[i1]; + for(i = i1; i < i2; i++) /* i: i1 -> i2 */ + playlist.list[i] = playlist.list[i + 1]; + playlist.list[i] = save; + if(playlist.selected == i1) + playlist.selected = i2; + else if(i1 < playlist.selected && playlist.selected <= i2) + playlist.selected--; + } + w32g_update_playlist(); +} + +char *w32g_get_playlist(int idx) +{ + if(idx < 0 || idx >= playlist.nfiles) + return NULL; + return playlist.list[idx].filename; } diff -ruN TiMidity++-2.4.1/interface/w32g_pref.c TiMidity++-2.5.0/interface/w32g_pref.c --- TiMidity++-2.4.1/interface/w32g_pref.c Thu Jan 1 09:00:00 1970 +++ TiMidity++-2.5.0/interface/w32g_pref.c Wed Aug 25 13:34:20 1999 @@ -0,0 +1,1468 @@ +/* + TiMidity++ -- MIDI to WAVE converter and player + Copyright (C) 1999 Masanao Izumo + Copyright (C) 1995 Tuukka Toivonen + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + w32g2_pref.c: Written by Daisuke Aoki +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif /* HAVE_CONFIG_H */ +#include +#include +#include +#include +#include +// #include +#if defined(__CYGWIN32__) || defined(__MINGW32__) +#include +#else +#include +#endif /* __CYGWIN32__ */ +#include +#ifndef NO_STRING_H +#include +#else +#include +#endif +//#include + +#include "timidity.h" +#include "common.h" +#include "instrum.h" +#include "playmidi.h" +#include "readmidi.h" +#include "output.h" +#include "controls.h" +#include "tables.h" +#include "miditrace.h" +#include "reverb.h" +#ifdef SUPPORT_SOUNDSPEC +#include "soundspec.h" +#endif /* SUPPORT_SOUNDSPEC */ +#include "recache.h" +#include "arc.h" +#include "strtab.h" +#include "wrd.h" +#include "mid.defs" + +#include "w32g.h" +#include "w32g_res.h" +#include "w32g_utl.h" +#include "w32g_pref.h" + +/* TiMidity Win32GUI preference / PropertySheet */ + +volatile int PrefWndDoing = 0; + +static volatile int PrefWndSetOK = 0; +static HPROPSHEETPAGE hPrefWnd; +static int CALLBACK PrefWndPropSheetProc(HWND hwndDlg, UINT uMsg, LPARAM lParam); +static BOOL APIENTRY PrefPlayerDialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +static BOOL APIENTRY PrefTiMidity1DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +static BOOL APIENTRY PrefTiMidity2DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +static BOOL APIENTRY PrefTiMidity3DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +static BOOL APIENTRY PrefTiMidity4DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +static int DlgOpenConfigFile(char *Filename, HWND hwnd); +static int DlgOpenOutputFile(char *Filename, HWND hwnd); + +#if defined(__CYGWIN32__) || defined(__MINGW32__) +//#define pszTemplate u1.pszTemplate +//#define pszIcon u2.pszIcon +#define NONAMELESSUNION +#define DUMMYUNIONNAME u1 +#define DUMMYUNIONNAME2 u2 +#define DUMMYUNIONNAME3 u3 +#endif + +#define PREFWND_NPAGES 5 +void PrefWndCreate(HWND hwnd) +{ + int res; + PROPSHEETPAGE psp[PREFWND_NPAGES]; + PROPSHEETHEADER psh; + + VOLATILE_TOUCH(PrefWndDoing); + if(PrefWndDoing) + return; + PrefWndDoing = 1; + PrefWndSetOK = 1; +// Player page. + psp[0].dwSize = sizeof(PROPSHEETPAGE); + psp[0].dwFlags = PSP_USETITLE; + psp[0].hInstance = hInst; +#if defined (__cplusplus) + psp[0].pszTemplate = MAKEINTRESOURCE(IDD_PREF_PLAYER); + psp[0].pszIcon = NULL; +#else +#ifdef NONAMELESSUNION + psp[0].DUMMYUNIONNAME.pszTemplate = MAKEINTRESOURCE(IDD_PREF_PLAYER); + psp[0].DUMMYUNIONNAME2.pszIcon = NULL; +#else + psp[0].pszTemplate = MAKEINTRESOURCE(IDD_PREF_PLAYER); + psp[0].pszIcon = NULL; +#endif +#endif + psp[0].pfnDlgProc = PrefPlayerDialogProc; + psp[0].pszTitle = (LPSTR)TEXT("Player"); + psp[0].lParam = 0; + psp[0].pfnCallback = NULL; +// TiMidity page1. + psp[1].dwSize = sizeof(PROPSHEETPAGE); + psp[1].dwFlags = PSP_USETITLE; + psp[1].hInstance = hInst; +#if defined (__cplusplus) + psp[1].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY1); + psp[1].pszIcon = NULL; +#else +#ifdef NONAMELESSUNION + psp[1].DUMMYUNIONNAME.pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY1); + psp[1].DUMMYUNIONNAME2.pszIcon = NULL; +#else + psp[1].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY1); + psp[1].pszIcon = NULL; +#endif +#endif + psp[1].pfnDlgProc = PrefTiMidity1DialogProc; + psp[1].pszTitle = (LPSTR)TEXT("Effect"); + psp[1].lParam = 0; + psp[1].pfnCallback = NULL; +// TiMidity page2. + psp[2].dwSize = sizeof(PROPSHEETPAGE); + psp[2].dwFlags = PSP_USETITLE; + psp[2].hInstance = hInst; +#if defined (__cplusplus) + psp[2].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY2); + psp[2].pszIcon = NULL; +#else +#ifdef NONAMELESSUNION + psp[2].DUMMYUNIONNAME.pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY2); + psp[2].DUMMYUNIONNAME2.pszIcon = NULL; +#else + psp[2].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY2); + psp[2].pszIcon = NULL; +#endif +#endif + psp[2].pfnDlgProc = PrefTiMidity2DialogProc; + psp[2].pszTitle = (LPSTR)TEXT("Misc"); + psp[2].lParam = 0; + psp[2].pfnCallback = NULL; +// TiMidity page3. + psp[3].dwSize = sizeof(PROPSHEETPAGE); + psp[3].dwFlags = PSP_USETITLE; + psp[3].hInstance = hInst; +#if defined (__cplusplus) + psp[3].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY3); + psp[3].pszIcon = NULL; +#else +#ifdef NONAMELESSUNION + psp[3].DUMMYUNIONNAME.pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY3); + psp[3].DUMMYUNIONNAME2.pszIcon = NULL; +#else + psp[3].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY3); + psp[3].pszIcon = NULL; +#endif +#endif + psp[3].pfnDlgProc = PrefTiMidity3DialogProc; + psp[3].pszTitle = (LPSTR)TEXT("Output"); + psp[3].lParam = 0; + psp[3].pfnCallback = NULL; +// TiMidity page4. + psp[4].dwSize = sizeof(PROPSHEETPAGE); + psp[4].dwFlags = PSP_USETITLE; + psp[4].hInstance = hInst; +#if defined (__cplusplus) + psp[4].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY4); + psp[4].pszIcon = NULL; +#else +#ifdef NONAMELESSUNION + psp[4].DUMMYUNIONNAME.pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY4); + psp[4].DUMMYUNIONNAME2.pszIcon = NULL; +#else + psp[4].pszTemplate = MAKEINTRESOURCE(IDD_PREF_TIMIDITY4); + psp[4].pszIcon = NULL; +#endif +#endif + psp[4].pfnDlgProc = PrefTiMidity4DialogProc; + psp[4].pszTitle = (LPSTR)TEXT("Channel"); + psp[4].lParam = 0; + psp[4].pfnCallback = NULL; +// Propsheetheader + psh.dwSize = sizeof(PROPSHEETHEADER); +// psh.dwFlags = PSH_USEHICON | PSH_PROPSHEETPAGE | PSH_USECALLBACK | PSH_NOAPPLYNOW; + psh.dwFlags = PSH_USEHICON | PSH_PROPSHEETPAGE | PSH_USECALLBACK; + psh.hwndParent = hwnd; + psh.hInstance = hInst; + psh.pszCaption = (LPSTR)TEXT("TiMidity Win32GUI Preference"); + psh.nPages = sizeof(psp) / sizeof(PROPSHEETPAGE); +#if defined (__cplusplus) + psh.nStartPage = 0; + psh.ppsp = (LPCPROPSHEETPAGE)&psp; +#else +#ifdef NONAMELESSUNION + psh.DUMMYUNIONNAME.hIcon = NULL; + psh.DUMMYUNIONNAME2.nStartPage = 0; + psh.DUMMYUNIONNAME3.ppsp = (LPCPROPSHEETPAGE)&psp; +#else + psh.hIcon = NULL; + psh.nStartPage = 0; + psh.ppsp = (LPCPROPSHEETPAGE)&psp; +#endif +#endif + psh.pfnCallback = PrefWndPropSheetProc; + + res = PropertySheet(&psh); + + PrefWndSetOK = 0; + PrefWndDoing = 0; + return; +} + +static HFONT hFontPrefWnd = NULL; +#define PREFWND_XSIZE 240*3 +#define PREFWND_YSIZE 180*4 +static int CALLBACK PrefWndPropSheetProc(HWND hwnd, UINT uMsg, LPARAM lParam) +{ + if(uMsg==PSCB_INITIALIZED){ + PrefWndSetOK = 1; + hPrefWnd = (HPROPSHEETPAGE)hwnd; + PropSheet_Changed(hwnd,0); + if(hFontPrefWnd==NULL){ + char FontLang[256]; + switch(PlayerLanguage){ + case LANGUAGE_ENGLISH: + strcpy(FontLang,"Times New Roman"); + break; + default: + case LANGUAGE_JAPANESE: + strcpy(FontLang,"lr o"); + break; + } + hFontPrefWnd = CreateFont(18,0,0,0,FW_DONTCARE,FALSE,FALSE,FALSE, + DEFAULT_CHARSET, + OUT_DEFAULT_PRECIS, + CLIP_DEFAULT_PRECIS, + DEFAULT_QUALITY, + DEFAULT_PITCH | FF_DONTCARE,FontLang); + } + } + return 0; +} + +#define DLG_CHECKBUTTON_TO_FLAG(hwnd,ctlid,x) \ + ((SendDlgItemMessage((hwnd),(ctlid),BM_GETCHECK,0,0))?((x)=1):((x)=0)) +#define DLG_FLAG_TO_CHECKBUTTON(hwnd,ctlid,x) \ + ((x)?(SendDlgItemMessage((hwnd),(ctlid),BM_SETCHECK,1,0)):\ + (SendDlgItemMessage((hwnd),(ctlid),BM_SETCHECK,0,0))) + + +/* + vpeBV[g + WM_NOTIFY PSN_KILLACTIVE + y[WANeBu + Jgy[WvpeBV[g OK or CLOSE + WM_NOTIFY PSN_SETACTIVE + y[WANeBu + WM_NOTIFY PSN_RESET + LZ + PrefWndSetOK = 0 +*/ + +/* st_temp, sp_temp Kp + * : MainThread o~AI + */ +void PrefSettingApplyReally(void) +{ + int restart; + extern int IniFileAutoSave; + + free_instruments(1); + if(play_mode->fd != -1) + play_mode->close_output(); + + restart = (PlayerLanguage != sp_temp->PlayerLanguage); + if(sp_temp->PlayerLanguage == LANGUAGE_JAPANESE) + strcpy(st_temp->output_text_code, "SJIS"); + else + strcpy(st_temp->output_text_code, "ASCII"); + ApplySettingPlayer(sp_temp); + ApplySettingTiMidity(st_temp); + SaveSettingPlayer(sp_current); + SaveSettingTiMidity(st_current); + memcpy(sp_temp, sp_current, sizeof(SETTING_PLAYER)); + memcpy(st_temp, st_current, sizeof(SETTING_TIMIDITY)); + restore_voices(1); + PrefWndSetOK = 0; + if(IniFileAutoSave) + SaveIniFile(sp_current, st_current); + if(restart && + MessageBox(hListWnd,"Restart TiMidity?", "TiMidity", + MB_YESNO)==IDYES) + { + if(hFontPrefWnd) + { + DeleteObject(hFontPrefWnd); + hFontPrefWnd = 0; + } + + w32g_restart(); + PrefWndDoing = 0; + } +} + +static void PrefSettingApply(void) +{ + w32g_send_rc(RC_EXT_APPLY_SETTING, 0); +} + +static BOOL APIENTRY +PrefPlayerDialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + switch (uMess){ + case WM_INITDIALOG: +// SendMessage(hwnd,WM_SETFONT,(WPARAM)hFontPrefWnd,MAKELPARAM(TRUE,0)); + SendDlgItemMessage(hwnd,IDC_EDIT_CONFIG_FILE, + WM_SETFONT,(WPARAM)hFontPrefWnd,MAKELPARAM(TRUE,0)); + break; + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDC_BUTTON_CONFIG_FILE: + { + char filename[MAXPATH+1]; + filename[0] = '\0'; + SendDlgItemMessage(hwnd,IDC_EDIT_CONFIG_FILE,WM_GETTEXT, + (WPARAM)MAX_PATH,(LPARAM)TEXT(filename)); + if(!DlgOpenConfigFile(filename,hwnd)) + if(filename[0]!='\0') + SetDlgItemText(hwnd,IDC_EDIT_CONFIG_FILE,TEXT(filename)); + } + break; + case IDC_RADIOBUTTON_JAPANESE: + case IDC_RADIOBUTTON_ENGLISH: + break; + default: + break; + } + PrefWndSetOK = 1; + PropSheet_Changed((HWND)hPrefWnd,hwnd); + break; + case WM_NOTIFY: + switch (((NMHDR FAR *) lParam)->code){ + case PSN_KILLACTIVE: + SendDlgItemMessage(hwnd,IDC_EDIT_CONFIG_FILE,WM_GETTEXT, + (WPARAM)MAX_PATH,(LPARAM)TEXT(sp_temp->ConfigFile)); + if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_ENGLISH,BM_GETCHECK,0,0)){ + sp_temp->PlayerLanguage = LANGUAGE_ENGLISH; + } else if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_JAPANESE,BM_GETCHECK,0,0)){ + sp_temp->PlayerLanguage = LANGUAGE_JAPANESE; + } + { + int flag; + + SettingCtlFlag(st_temp, 'x', + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_AUTOQUIT,flag)); + SettingCtlFlag(st_temp, 'u', + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_AUTOUNIQ,flag)); + SettingCtlFlag(st_temp, 'R', + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_AUTOREFINE,flag)); + SettingCtlFlag(st_temp, 'C', + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_NOT_CONTINUE,flag)); + SettingCtlFlag(st_temp, 'd', + !DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_NOT_DRAG_START,flag)); + SettingCtlFlag(st_temp, 'l', + !DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_NOT_LOOPING,flag)); + } + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_SEACHDIRRECURSIVE, + sp_temp->SeachDirRecursive); + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_DOCWNDINDEPENDENT, + sp_temp->DocWndIndependent); + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECK_INIFILE_AUTOSAVE, + sp_temp->IniFileAutoSave); + SetWindowLong(hwnd,DWL_MSGRESULT,FALSE); + return TRUE; + case PSN_RESET: + PrefWndSetOK = 0; + SetWindowLong(hwnd, DWL_MSGRESULT, FALSE); + break; + case PSN_APPLY: + PrefSettingApply(); + PropSheet_UnChanged(hPrefWnd,hwnd); + break; + case PSN_SETACTIVE: + SetDlgItemText(hwnd,IDC_EDIT_CONFIG_FILE,TEXT(sp_temp->ConfigFile)); + switch(sp_temp->PlayerLanguage){ + case LANGUAGE_ENGLISH: + CheckRadioButton(hwnd,IDC_RADIOBUTTON_JAPANESE,IDC_RADIOBUTTON_ENGLISH, + IDC_RADIOBUTTON_ENGLISH); + break; + default: + case LANGUAGE_JAPANESE: + CheckRadioButton(hwnd,IDC_RADIOBUTTON_JAPANESE,IDC_RADIOBUTTON_ENGLISH, + IDC_RADIOBUTTON_JAPANESE); + break; + } + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_AUTOQUIT, + strchr(st_temp->opt_ctl + 1, 'x')); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_AUTOUNIQ, + strchr(st_temp->opt_ctl + 1, 'u')); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_AUTOREFINE, + strchr(st_temp->opt_ctl + 1, 'R')); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_NOT_CONTINUE, + strchr(st_temp->opt_ctl + 1, 'C')); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_NOT_DRAG_START, + !strchr(st_temp->opt_ctl + 1, 'd')); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_NOT_LOOPING, + !strchr(st_temp->opt_ctl + 1, 'l')); + + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_SEACHDIRRECURSIVE, + sp_temp->SeachDirRecursive); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_DOCWNDINDEPENDENT, + sp_temp->DocWndIndependent); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECK_INIFILE_AUTOSAVE, + sp_temp->IniFileAutoSave); + break; + default: + return FALSE; + } + case WM_SIZE: + return FALSE; + case WM_CLOSE: + break; + default: + break; + } + return FALSE; +} + +static BOOL APIENTRY +PrefTiMidity1DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + switch (uMess){ + case WM_INITDIALOG: + break; + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDCLOSE: + break; + case IDC_CHECKBOX_CHORUS: + case IDC_CHECKBOX_CHORUS_LEVEL: + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_CHORUS,BM_GETCHECK,0,0)){ + EnableWindow(GetDlgItem(hwnd,IDC_CHECKBOX_CHORUS_LEVEL),TRUE); + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_CHORUS_LEVEL,BM_GETCHECK,0,0)){ + EnableWindow(GetDlgItem(hwnd,IDC_EDIT_CHORUS),TRUE); + } else { + EnableWindow(GetDlgItem(hwnd,IDC_EDIT_CHORUS),FALSE); + } + } else { + EnableWindow(GetDlgItem(hwnd,IDC_CHECKBOX_CHORUS_LEVEL),FALSE); + EnableWindow(GetDlgItem(hwnd,IDC_EDIT_CHORUS),FALSE); + } + break; + case IDC_CHECKBOX_REVERB: + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB,BM_GETCHECK,0,0)){ + EnableWindow(GetDlgItem(hwnd,IDC_CHECKBOX_GLOBAL_REVERB),TRUE); + EnableWindow(GetDlgItem(hwnd,IDC_CHECKBOX_REVERB_LEVEL),TRUE); + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB_LEVEL,BM_GETCHECK,0,0)){ + EnableWindow(GetDlgItem(hwnd,IDC_EDIT_REVERB),TRUE); + } else { + EnableWindow(GetDlgItem(hwnd,IDC_EDIT_REVERB),FALSE); + } + } else { + EnableWindow(GetDlgItem(hwnd,IDC_CHECKBOX_GLOBAL_REVERB),FALSE); + EnableWindow(GetDlgItem(hwnd,IDC_CHECKBOX_REVERB_LEVEL),FALSE); + EnableWindow(GetDlgItem(hwnd,IDC_EDIT_REVERB),FALSE); + } + break; + case IDC_CHECKBOX_GLOBAL_REVERB: + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_GLOBAL_REVERB,BM_GETCHECK,0,0)){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB_LEVEL,BM_SETCHECK,0,0); + } + SendMessage(hwnd,WM_COMMAND,IDC_CHECKBOX_REVERB,0); + break; + case IDC_CHECKBOX_REVERB_LEVEL: + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB_LEVEL,BM_GETCHECK,0,0)){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_GLOBAL_REVERB,BM_SETCHECK,0,0); + } + SendMessage(hwnd,WM_COMMAND,IDC_CHECKBOX_REVERB,0); + break; + case IDC_CHECKBOX_DELAY: + case IDC_RADIOBUTTON_DELAY_LEFT: + case IDC_RADIOBUTTON_DELAY_RIGHT: + case IDC_RADIOBUTTON_DELAY_CENTER: + if(!SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_DELAY_LEFT,BM_GETCHECK,0,0)) + if(!SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_DELAY_RIGHT,BM_GETCHECK,0,0)) + if(!SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_DELAY_CENTER,BM_GETCHECK,0,0)) + CheckRadioButton(hwnd,IDC_RADIOBUTTON_DELAY_LEFT,IDC_RADIOBUTTON_DELAY_CENTER,IDC_RADIOBUTTON_DELAY_CENTER); + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_DELAY,BM_GETCHECK,0,0)){ + EnableWindow(GetDlgItem(hwnd,IDC_RADIOBUTTON_DELAY_LEFT),TRUE); + EnableWindow(GetDlgItem(hwnd,IDC_RADIOBUTTON_DELAY_RIGHT),TRUE); + EnableWindow(GetDlgItem(hwnd,IDC_RADIOBUTTON_DELAY_CENTER),TRUE); + EnableWindow(GetDlgItem(hwnd,IDC_EDIT_DELAY),TRUE); + } else { + EnableWindow(GetDlgItem(hwnd,IDC_RADIOBUTTON_DELAY_LEFT),FALSE); + EnableWindow(GetDlgItem(hwnd,IDC_RADIOBUTTON_DELAY_RIGHT),FALSE); + EnableWindow(GetDlgItem(hwnd,IDC_RADIOBUTTON_DELAY_CENTER),FALSE); + EnableWindow(GetDlgItem(hwnd,IDC_EDIT_DELAY),FALSE); + } + break; + default: + PrefWndSetOK = 1; + return FALSE; + break; + } + PrefWndSetOK = 1; + PropSheet_Changed((HWND)hPrefWnd,hwnd); + break; + case WM_NOTIFY: + switch (((NMHDR FAR *) lParam)->code){ + case PSN_KILLACTIVE: + // CHORUS + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_CHORUS,BM_GETCHECK,0,0)){ + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_CHORUS_LEVEL,BM_GETCHECK,0,0)){ + st_temp->opt_chorus_control = -GetDlgItemInt(hwnd,IDC_EDIT_CHORUS,NULL,TRUE); + } else { + st_temp->opt_chorus_control = 1; + } + } else { + st_temp->opt_chorus_control = 0; + } + // REVERB + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB,BM_GETCHECK,0,0)){ + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_GLOBAL_REVERB,BM_GETCHECK,0,0)){ + st_temp->opt_reverb_control = 2; + } else if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB_LEVEL,BM_GETCHECK,0,0)){ + st_temp->opt_reverb_control = -GetDlgItemInt(hwnd,IDC_EDIT_REVERB,NULL,TRUE); + } else { + st_temp->opt_reverb_control = 1; + } + } else { + st_temp->opt_reverb_control = 0; + } + // DELAY + st_temp->effect_lr_delay_msec = GetDlgItemInt(hwnd,IDC_EDIT_DELAY,NULL,FALSE); + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_DELAY,BM_GETCHECK,0,0)){ + if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_DELAY_LEFT,BM_GETCHECK,0,0)){ + st_temp->effect_lr_mode = 0; + } else if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_DELAY_RIGHT,BM_GETCHECK,0,0)){ + st_temp->effect_lr_mode = 1; + } else { + st_temp->effect_lr_mode = 2; + } + } else { + st_temp->effect_lr_mode = -1; + } + // NOISESHARPING + st_temp->noise_sharp_type = GetDlgItemInt(hwnd,IDC_EDIT_NOISESHARPING,NULL,FALSE); + // Misc + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_MODWHEEL,st_temp->opt_modulation_wheel); + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_PORTAMENTO,st_temp->opt_portamento); + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_NRPNVIB,st_temp->opt_nrpn_vibrato); + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_CHPRESS,st_temp->opt_channel_pressure); + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_OVOICE,st_temp->opt_overlap_voice_allow); + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_TRACETEXT,st_temp->opt_trace_text_meta_event); + st_temp->modify_release = GetDlgItemInt(hwnd,IDC_EDIT_MODIFY_RELEASE,NULL,FALSE); + SetWindowLong(hwnd,DWL_MSGRESULT,FALSE); + return TRUE; + case PSN_RESET: + PrefWndSetOK = 0; + SetWindowLong(hwnd, DWL_MSGRESULT, FALSE); + break; + case PSN_APPLY: + PrefSettingApply(); + break; + case PSN_SETACTIVE: + // CHORUS + if(GetDlgItemInt(hwnd,IDC_EDIT_CHORUS,NULL,FALSE)==0) + SetDlgItemInt(hwnd,IDC_EDIT_CHORUS,1,TRUE); + if(st_temp->opt_chorus_control==0){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_CHORUS,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_CHORUS_LEVEL,BM_SETCHECK,0,0); + } else if(st_temp->opt_chorus_control>0){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_CHORUS,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_CHORUS_LEVEL,BM_SETCHECK,0,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_CHORUS,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_CHORUS_LEVEL,BM_SETCHECK,1,0); + SetDlgItemInt(hwnd,IDC_EDIT_CHORUS,-st_temp->opt_chorus_control,TRUE); + } + SendMessage(hwnd,WM_COMMAND,IDC_CHECKBOX_CHORUS,0); + // REVERB + if(GetDlgItemInt(hwnd,IDC_EDIT_REVERB,NULL,FALSE)==0) + SetDlgItemInt(hwnd,IDC_EDIT_REVERB,1,TRUE); + if(st_temp->opt_reverb_control==0){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_GLOBAL_REVERB,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB_LEVEL,BM_SETCHECK,0,0); + } else if(st_temp->opt_reverb_control==1){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_GLOBAL_REVERB,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB_LEVEL,BM_SETCHECK,0,0); + } else if(st_temp->opt_reverb_control>=2){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_GLOBAL_REVERB,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB_LEVEL,BM_SETCHECK,0,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_GLOBAL_REVERB,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_REVERB_LEVEL,BM_SETCHECK,1,0); + SetDlgItemInt(hwnd,IDC_EDIT_REVERB,-st_temp->opt_reverb_control,TRUE); + } + SendMessage(hwnd,WM_COMMAND,IDC_CHECKBOX_REVERB,0); + // DELAY + SetDlgItemInt(hwnd,IDC_EDIT_DELAY,st_temp->effect_lr_delay_msec,TRUE); + if(st_temp->effect_lr_mode<0){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DELAY,BM_SETCHECK,0,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DELAY,BM_SETCHECK,1,0); + switch(st_temp->effect_lr_mode){ + case 0: + CheckRadioButton(hwnd,IDC_RADIOBUTTON_DELAY_LEFT,IDC_RADIOBUTTON_DELAY_CENTER, + IDC_RADIOBUTTON_DELAY_LEFT); + break; + case 1: + CheckRadioButton(hwnd,IDC_RADIOBUTTON_DELAY_LEFT,IDC_RADIOBUTTON_DELAY_CENTER, + IDC_RADIOBUTTON_DELAY_RIGHT); + break; + case 2: + default: + CheckRadioButton(hwnd,IDC_RADIOBUTTON_DELAY_LEFT,IDC_RADIOBUTTON_DELAY_CENTER, + IDC_RADIOBUTTON_DELAY_CENTER); + break; + } + } + SendMessage(hwnd,WM_COMMAND,IDC_CHECKBOX_DELAY,0); + // NOISESHARPING + SetDlgItemInt(hwnd,IDC_EDIT_NOISESHARPING,st_temp->noise_sharp_type,TRUE); + // Misc + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_MODWHEEL,st_temp->opt_modulation_wheel); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_PORTAMENTO,st_temp->opt_portamento); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_NRPNVIB,st_temp->opt_nrpn_vibrato); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CHPRESS,st_temp->opt_channel_pressure); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_OVOICE,st_temp->opt_overlap_voice_allow); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_TRACETEXT,st_temp->opt_trace_text_meta_event); + SetDlgItemInt(hwnd,IDC_EDIT_MODIFY_RELEASE,st_temp->modify_release,TRUE); + break; + default: + return FALSE; + } + case WM_SIZE: + return FALSE; + case WM_CLOSE: + break; + default: + break; + } + return FALSE; +} + +static int char_count(char *s, int c) +{ + int n = 0; + while(*s) + n += (*s++ == c); + return n; +} + +static BOOL APIENTRY +PrefTiMidity2DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + switch (uMess){ + case WM_INITDIALOG: + break; + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDCLOSE: + break; + case IDC_CHECKBOX_SPECIAL_TONEBANK: + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_SPECIAL_TONEBANK,BM_GETCHECK,0,0)){ + EnableWindow(GetDlgItem(hwnd,IDC_EDIT_SPECIAL_TONEBANK),TRUE); + } else { + EnableWindow(GetDlgItem(hwnd,IDC_EDIT_SPECIAL_TONEBANK),FALSE); + } + default: + break; + } + PrefWndSetOK = 1; + PropSheet_Changed((HWND)hPrefWnd,hwnd); + break; + case WM_NOTIFY: + switch (((NMHDR FAR *) lParam)->code){ + case PSN_KILLACTIVE: { + int i; + char *p; + st_temp->voices = GetDlgItemInt(hwnd,IDC_EDIT_VOICES,NULL,FALSE); + st_temp->amplification = GetDlgItemInt(hwnd,IDC_EDIT_AMPLIFICATION,NULL,FALSE); + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_FREE_INST,st_temp->free_instruments_afterwards); + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_ANTIALIAS,st_temp->antialiasing_allowed); + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_LOADINST_PLAYING,st_temp->opt_realtime_playing); + st_temp->allocate_cache_size = GetDlgItemInt(hwnd,IDC_EDIT_CACHE_SIZE,NULL,FALSE); + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_REDUCE_VOICE,BM_GETCHECK,0,0)) + { + st_temp->reduce_voice_threshold = -1; + st_temp->auto_reduce_polyphony = 1; + } + else + { + st_temp->reduce_voice_threshold = 0; + st_temp->auto_reduce_polyphony = 0; + } + + st_temp->default_tonebank = GetDlgItemInt(hwnd,IDC_EDIT_DEFAULT_TONEBANK,NULL,FALSE); + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_SPECIAL_TONEBANK,BM_GETCHECK,0,0)){ + st_temp->special_tonebank = GetDlgItemInt(hwnd,IDC_EDIT_SPECIAL_TONEBANK,NULL,TRUE); + } else { + st_temp->special_tonebank = -1; + } + if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_GS,BM_GETCHECK,0,0)){ + st_temp->opt_default_mid = 0x41; + } else if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_XG,BM_GETCHECK,0,0)){ + st_temp->opt_default_mid = 0x43; + } else + st_temp->opt_default_mid = 0x7e; + + SettingCtlFlag(st_temp, 't', + DLG_CHECKBUTTON_TO_FLAG(hwnd,IDC_CHECKBOX_CTL_TRACE_PLAYING,i)); + + /* remove 'v' and 'q' from st_temp->opt_ctl */ + while(strchr(st_temp->opt_ctl + 1, 'v')) + SettingCtlFlag(st_temp, 'v', 0); + while(strchr(st_temp->opt_ctl + 1, 'q')) + SettingCtlFlag(st_temp, 'q', 0); + + /* append 'v' or 'q' */ + p = st_temp->opt_ctl + strlen(st_temp->opt_ctl); + i = GetDlgItemInt(hwnd,IDC_EDIT_CTL_VEBOSITY,NULL,TRUE); + while(i > 1) { *p++ = 'v'; i--; } + while(i < 1) { *p++ = 'q'; i++; } + + st_temp->control_ratio = GetDlgItemInt(hwnd,IDC_EDIT_CONTROL_RATIO,NULL,FALSE); + SetWindowLong(hwnd,DWL_MSGRESULT,FALSE); + } + return TRUE; + case PSN_RESET: + PrefWndSetOK = 0; + SetWindowLong(hwnd, DWL_MSGRESULT, FALSE); + break; + case PSN_APPLY: + PrefSettingApply(); + break; + case PSN_SETACTIVE: + SetDlgItemInt(hwnd,IDC_EDIT_VOICES,st_temp->voices,FALSE); + SetDlgItemInt(hwnd,IDC_EDIT_AMPLIFICATION,st_temp->amplification,FALSE); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_FREE_INST,st_temp->free_instruments_afterwards); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_ANTIALIAS,st_temp->antialiasing_allowed); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_LOADINST_PLAYING,st_temp->opt_realtime_playing); + SetDlgItemInt(hwnd,IDC_EDIT_CACHE_SIZE,st_temp->allocate_cache_size,FALSE); + + SetDlgItemInt(hwnd,IDC_EDIT_REDUCE_VOICE,st_temp->reduce_voice_threshold,TRUE); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_REDUCE_VOICE,BM_SETCHECK,st_temp->reduce_voice_threshold,0); + SetDlgItemInt(hwnd,IDC_EDIT_DEFAULT_TONEBANK,st_temp->default_tonebank,FALSE); + SetDlgItemInt(hwnd,IDC_EDIT_SPECIAL_TONEBANK,st_temp->special_tonebank,TRUE); + if(st_temp->special_tonebank<0){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_SPECIAL_TONEBANK,BM_SETCHECK,0,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_SPECIAL_TONEBANK,BM_SETCHECK,1,0); + } + SendMessage(hwnd,WM_COMMAND,IDC_CHECKBOX_SPECIAL_TONEBANK,0); + switch(st_temp->opt_default_mid){ + case 0x41: + CheckRadioButton(hwnd,IDC_RADIOBUTTON_GM,IDC_RADIOBUTTON_XG,IDC_RADIOBUTTON_GS); + break; + case 0x43: + CheckRadioButton(hwnd,IDC_RADIOBUTTON_GM,IDC_RADIOBUTTON_XG,IDC_RADIOBUTTON_XG); + break; + default: + case 0x7e: + CheckRadioButton(hwnd,IDC_RADIOBUTTON_GM,IDC_RADIOBUTTON_XG,IDC_RADIOBUTTON_GM); + break; + } + + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CTL_TRACE_PLAYING, + strchr(st_temp->opt_ctl + 1, 't')); + SetDlgItemInt(hwnd,IDC_EDIT_CTL_VEBOSITY, + char_count(st_temp->opt_ctl + 1, 'v') - + char_count(st_temp->opt_ctl + 1, 'q') + 1, TRUE); + SetDlgItemInt(hwnd,IDC_EDIT_CONTROL_RATIO,st_temp->control_ratio,FALSE); + break; + default: + return FALSE; + } + case WM_SIZE: + return FALSE; + case WM_CLOSE: + break; + default: + break; + } + return FALSE; +} + +static BOOL APIENTRY +PrefTiMidity3DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + switch (uMess){ + case WM_INITDIALOG: + SendDlgItemMessage(hwnd,IDC_EDIT_OUTPUT_FILE, + WM_SETFONT,(WPARAM)hFontPrefWnd,MAKELPARAM(TRUE,0)); + break; + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDCLOSE: + break; + case IDC_BUTTON_OUTPUT_FILE: + { + char filename[MAXPATH+1]; + filename[0] = '\0'; + SendDlgItemMessage(hwnd,IDC_EDIT_OUTPUT_FILE,WM_GETTEXT, + (WPARAM)MAX_PATH,(LPARAM)TEXT(filename)); + if(!DlgOpenOutputFile(filename,hwnd)) + if(filename[0]!='\0') + SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,TEXT(filename)); + } + break; + case IDC_BUTTON_OUTPUT_FILE_DEL: + { + char filename[MAXPATH+1]; + DWORD res; + GetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,filename,(WPARAM)MAX_PATH); + res = GetFileAttributes(filename); + if(res!=0xFFFFFFFF && !(res & FILE_ATTRIBUTE_DIRECTORY)){ + if(DeleteFile(filename)!=TRUE){ + char buffer[MAXPATH + 1024]; + sprintf(buffer,"Can't delete file %s !",filename); + MessageBox(NULL,buffer,"Error!", MB_OK); + } else { + char buffer[MAXPATH + 1024]; + sprintf(buffer,"Delete file %s !",filename); + MessageBox(NULL,buffer,"Delete!", MB_OK); + } + } + } + break; + case IDC_BUTTON_LOW: + SetDlgItemInt(hwnd,IDC_EDIT_SAMPLE_RATE,11025,FALSE); + break; + case IDC_BUTTON_MIDDLE: + SetDlgItemInt(hwnd,IDC_EDIT_SAMPLE_RATE,22050,FALSE); + break; + case IDC_BUTTON_HIGH: + SetDlgItemInt(hwnd,IDC_EDIT_SAMPLE_RATE,44100,FALSE); + break; + case IDC_BUTTON_4: + SetDlgItemInt(hwnd,IDC_EDIT_SAMPLE_RATE,4000,FALSE); + break; + case IDC_BUTTON_8: + SetDlgItemInt(hwnd,IDC_EDIT_SAMPLE_RATE,8000,FALSE); + break; + case IDC_BUTTON_16: + SetDlgItemInt(hwnd,IDC_EDIT_SAMPLE_RATE,16000,FALSE); + break; + case IDC_BUTTON_24: + SetDlgItemInt(hwnd,IDC_EDIT_SAMPLE_RATE,24000,FALSE); + break; + case IDC_BUTTON_32: + SetDlgItemInt(hwnd,IDC_EDIT_SAMPLE_RATE,32000,FALSE); + break; + case IDC_BUTTON_40: + SetDlgItemInt(hwnd,IDC_EDIT_SAMPLE_RATE,40000,FALSE); + break; + case IDC_BUTTON_48: + SetDlgItemInt(hwnd,IDC_EDIT_SAMPLE_RATE,48000,FALSE); + break; + case IDC_CHECKBOX_ULAW: + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_GETCHECK,0,0)){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_8BITS,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_16BITS,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_SETCHECK,0,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0); + } + break; + case IDC_CHECKBOX_ALAW: + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_GETCHECK,0,0)){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_8BITS,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_16BITS,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_SETCHECK,0,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0); + } + break; + case IDC_CHECKBOX_LINEAR: + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_GETCHECK,0,0)){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0); + } + break; + case IDC_CHECKBOX_8BITS: + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_8BITS,BM_GETCHECK,0,0)){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_8BITS,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_16BITS,BM_SETCHECK,0,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_8BITS,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_16BITS,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0); + } + break; + case IDC_CHECKBOX_16BITS: + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_16BITS,BM_GETCHECK,0,0)){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_8BITS,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_16BITS,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_8BITS,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_16BITS,BM_SETCHECK,0,0); + } + break; + case IDC_CHECKBOX_SIGNED: + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_GETCHECK,0,0)){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0); + } + break; + case IDC_CHECKBOX_UNSIGNED: + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_GETCHECK,0,0)){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0); + } + break; + case IDC_CHECKBOX_BYTESWAP: + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_GETCHECK,0,0)){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0); + } + break; + case IDC_RADIO_STEREO: + if(SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_GETCHECK,0,0)){ + SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_SETCHECK,0,0); + } else { + SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_SETCHECK,1,0); + } + break; + case IDC_RADIO_MONO: + if(SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_GETCHECK,0,0)){ + SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_SETCHECK,1,0); + } else { + SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_SETCHECK,0,0); + } + break; + default: + break; + } + PrefWndSetOK = 1; + PropSheet_Changed((HWND)hPrefWnd,hwnd); + break; + case WM_NOTIFY: + switch (((NMHDR FAR *) lParam)->code){ + case PSN_KILLACTIVE: { + int i = 0; + if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_RIFF_WAVE,BM_GETCHECK,0,0)){ + st_temp->opt_playmode[i] = 'w'; + } else + if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_LIST_MIDI_EVENT,BM_GETCHECK,0,0)){ + st_temp->opt_playmode[i] = 'l'; + } else + if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_RAW_WAVEFORM,BM_GETCHECK,0,0)){ + st_temp->opt_playmode[i] = 'r'; + } else + if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_SUN_AUDIO,BM_GETCHECK,0,0)){ + st_temp->opt_playmode[i] = 'u'; + } else + if(SendDlgItemMessage(hwnd,IDC_RADIOBUTTON_AIFF,BM_GETCHECK,0,0)){ + st_temp->opt_playmode[i] = 'a'; + } else + st_temp->opt_playmode[i] = 'd'; + i++; + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_GETCHECK,0,0)) + st_temp->opt_playmode[i++] = 'U'; + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_GETCHECK,0,0)) + st_temp->opt_playmode[i++] = 'A'; + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_GETCHECK,0,0)) + st_temp->opt_playmode[i++] = 'l'; + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_8BITS,BM_GETCHECK,0,0)) + st_temp->opt_playmode[i++] = '8'; + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_16BITS,BM_GETCHECK,0,0)) + st_temp->opt_playmode[i++] = '1'; + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_GETCHECK,0,0)) + st_temp->opt_playmode[i++] = 's'; + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_GETCHECK,0,0)) + st_temp->opt_playmode[i++] = 'u'; + if(SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_GETCHECK,0,0)) + st_temp->opt_playmode[i++] = 'x'; + if(SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_GETCHECK,0,0)) + st_temp->opt_playmode[i++] = 'S'; + if(SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_GETCHECK,0,0)) + st_temp->opt_playmode[i++] = 'M'; + st_temp->opt_playmode[i] = '\0'; + st_temp->output_rate = GetDlgItemInt(hwnd,IDC_EDIT_SAMPLE_RATE,NULL,FALSE); + GetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,st_temp->OutputName,(WPARAM)sizeof(st_temp->OutputName)); + SetWindowLong(hwnd,DWL_MSGRESULT,FALSE); + } + return TRUE; + case PSN_RESET: + PrefWndSetOK = 0; + SetWindowLong(hwnd, DWL_MSGRESULT, FALSE); + break; + case PSN_APPLY: + PrefSettingApply(); + break; + case PSN_SETACTIVE: { + char *opt; + switch(st_temp->opt_playmode[0]){ + case 'w': + CheckRadioButton(hwnd,IDC_RADIOBUTTON_WIN32AUDIO,IDC_RADIOBUTTON_AIFF, + IDC_RADIOBUTTON_RIFF_WAVE); + break; + case 'r': + CheckRadioButton(hwnd,IDC_RADIOBUTTON_WIN32AUDIO,IDC_RADIOBUTTON_AIFF, + IDC_RADIOBUTTON_RAW_WAVEFORM); + break; + case 'u': + CheckRadioButton(hwnd,IDC_RADIOBUTTON_WIN32AUDIO,IDC_RADIOBUTTON_AIFF, + IDC_RADIOBUTTON_SUN_AUDIO); + break; + case 'a': + CheckRadioButton(hwnd,IDC_RADIOBUTTON_WIN32AUDIO,IDC_RADIOBUTTON_AIFF, + IDC_RADIOBUTTON_AIFF); + break; + case 'l': + CheckRadioButton(hwnd,IDC_RADIOBUTTON_WIN32AUDIO,IDC_RADIOBUTTON_AIFF, + IDC_RADIOBUTTON_LIST_MIDI_EVENT); + break; + case 'd': + default: + CheckRadioButton(hwnd,IDC_RADIOBUTTON_WIN32AUDIO,IDC_RADIOBUTTON_AIFF, + IDC_RADIOBUTTON_WIN32AUDIO); + break; + } + if(st_temp->OutputName[0]=='\0') + SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,TEXT("output.wav")); + else + SetDlgItemText(hwnd,IDC_EDIT_OUTPUT_FILE,TEXT(st_temp->OutputName)); + + opt = st_temp->opt_playmode + 1; + if(strchr(opt, 'U')){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,0,0); + } else if(strchr(opt, 'A')){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,0,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ULAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_ALAW,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_LINEAR,BM_SETCHECK,1,0); + } + if(strchr(opt, '1')){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_8BITS,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_16BITS,BM_SETCHECK,1,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_8BITS,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_16BITS,BM_SETCHECK,0,0); + } + if(strchr(opt, 's')){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,0,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_SIGNED,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_UNSIGNED,BM_SETCHECK,1,0); + } + if(strchr(opt, 'x')){ + SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_SETCHECK,1,0); + } else { + SendDlgItemMessage(hwnd,IDC_CHECKBOX_BYTESWAP,BM_SETCHECK,0,0); + } + if(strchr(opt, 'M')){ + SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_SETCHECK,1,0); + } else { + SendDlgItemMessage(hwnd,IDC_RADIO_STEREO,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_RADIO_MONO,BM_SETCHECK,0,0); + } + SetDlgItemInt(hwnd,IDC_EDIT_SAMPLE_RATE,st_temp->output_rate,FALSE); +#if 0 // Buggy + EnableWindow(GetDlgItem(hwnd,IDC_RADIOBUTTON_LIST_MIDI_EVENT),FALSE); +#endif + break; + } + default: + return FALSE; + } + case WM_SIZE: + return FALSE; + case WM_CLOSE: + break; + default: + break; + } + return FALSE; +} + +#define PREF_CHANNEL_MODE_DRUM_CHANNEL 1 +#define PREF_CHANNEL_MODE_DRUM_CHANNEL_MASK 2 +#define PREF_CHANNEL_MODE_QUIET_CHANNEL 3 +static BOOL APIENTRY +PrefTiMidity4DialogProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + static int pref_channel_mode; + switch (uMess){ + case WM_INITDIALOG: + pref_channel_mode = PREF_CHANNEL_MODE_DRUM_CHANNEL; + break; + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDCLOSE: + break; + case IDC_CHECKBOX_DRUM_CHANNEL: + { + NMHDR nmhdr; + nmhdr.code = PSN_KILLACTIVE; + SendMessage(hwnd,WM_NOTIFY,0,(LPARAM)&nmhdr); + pref_channel_mode = PREF_CHANNEL_MODE_DRUM_CHANNEL; + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL_MASK,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_QUIET_CHANNEL,BM_SETCHECK,0,0); + nmhdr.code = PSN_SETACTIVE; + SendMessage(hwnd,WM_NOTIFY,0,(LPARAM)&nmhdr); + } + break; + case IDC_CHECKBOX_DRUM_CHANNEL_MASK: + { + NMHDR nmhdr; + nmhdr.code = PSN_KILLACTIVE; + SendMessage(hwnd,WM_NOTIFY,0,(LPARAM)&nmhdr); + pref_channel_mode = PREF_CHANNEL_MODE_DRUM_CHANNEL_MASK; + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL_MASK,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_QUIET_CHANNEL,BM_SETCHECK,0,0); + nmhdr.code = PSN_SETACTIVE; + SendMessage(hwnd,WM_NOTIFY,0,(LPARAM)&nmhdr); + } + break; + case IDC_CHECKBOX_QUIET_CHANNEL: + { + NMHDR nmhdr; + nmhdr.code = PSN_KILLACTIVE; + SendMessage(hwnd,WM_NOTIFY,0,(LPARAM)&nmhdr); + pref_channel_mode = PREF_CHANNEL_MODE_QUIET_CHANNEL; + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL_MASK,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_QUIET_CHANNEL,BM_SETCHECK,1,0); + nmhdr.code = PSN_SETACTIVE; + SendMessage(hwnd,WM_NOTIFY,0,(LPARAM)&nmhdr); + } + break; + default: + break; + } + PrefWndSetOK = 1; + PropSheet_Changed((HWND)hPrefWnd,hwnd); + break; + case WM_NOTIFY: + switch (((NMHDR FAR *) lParam)->code){ + case PSN_KILLACTIVE: + { + ChannelBitMask channelbitmask; + int tmp; +#define PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,ctlid,channelbitmask,ch,tmp) \ +{ if(DLG_CHECKBUTTON_TO_FLAG((hwnd),(ctlid),(tmp))) SET_CHANNELMASK((channelbitmask),(ch)); \ + else UNSET_CHANNELMASK((channelbitmask),(ch)); } + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH01,channelbitmask,0,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH02,channelbitmask,1,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH03,channelbitmask,2,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH04,channelbitmask,3,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH05,channelbitmask,4,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH06,channelbitmask,5,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH07,channelbitmask,6,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH08,channelbitmask,7,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH09,channelbitmask,8,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH10,channelbitmask,9,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH11,channelbitmask,10,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH12,channelbitmask,11,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH13,channelbitmask,12,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH14,channelbitmask,13,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH15,channelbitmask,14,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH16,channelbitmask,15,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH17,channelbitmask,16,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH18,channelbitmask,17,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH19,channelbitmask,18,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH20,channelbitmask,19,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH21,channelbitmask,20,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH22,channelbitmask,21,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH23,channelbitmask,22,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH24,channelbitmask,23,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH25,channelbitmask,24,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH26,channelbitmask,25,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH27,channelbitmask,26,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH28,channelbitmask,27,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH29,channelbitmask,28,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH30,channelbitmask,29,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH31,channelbitmask,30,tmp); + PREF_CHECKBUTTON_SET_CHANNELMASK(hwnd,IDC_CHECKBOX_CH32,channelbitmask,31,tmp); + switch(pref_channel_mode){ + case PREF_CHANNEL_MODE_DRUM_CHANNEL_MASK: + st_temp->default_drumchannel_mask = channelbitmask; + break; + case PREF_CHANNEL_MODE_QUIET_CHANNEL: + st_temp->quietchannels = channelbitmask; + break; + default: + case PREF_CHANNEL_MODE_DRUM_CHANNEL: + st_temp->default_drumchannels = channelbitmask; + break; + } + } + SetWindowLong(hwnd,DWL_MSGRESULT,FALSE); + return TRUE; + case PSN_RESET: + PrefWndSetOK = 0; + SetWindowLong(hwnd, DWL_MSGRESULT, FALSE); + break; + case PSN_APPLY: + PrefSettingApply(); + break; + case PSN_SETACTIVE: + { + ChannelBitMask channelbitmask; + switch(pref_channel_mode){ + case PREF_CHANNEL_MODE_DRUM_CHANNEL_MASK: + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL_MASK,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_QUIET_CHANNEL,BM_SETCHECK,0,0); + channelbitmask = st_temp->default_drumchannel_mask; + break; + case PREF_CHANNEL_MODE_QUIET_CHANNEL: + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL_MASK,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_QUIET_CHANNEL,BM_SETCHECK,1,0); + channelbitmask = st_temp->quietchannels; + break; + default: + case PREF_CHANNEL_MODE_DRUM_CHANNEL: + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL,BM_SETCHECK,1,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_DRUM_CHANNEL_MASK,BM_SETCHECK,0,0); + SendDlgItemMessage(hwnd,IDC_CHECKBOX_QUIET_CHANNEL,BM_SETCHECK,0,0); + channelbitmask = st_temp->default_drumchannels; + break; + } + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH01,IS_SET_CHANNELMASK(channelbitmask,0)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH02,IS_SET_CHANNELMASK(channelbitmask,1)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH03,IS_SET_CHANNELMASK(channelbitmask,2)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH04,IS_SET_CHANNELMASK(channelbitmask,3)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH05,IS_SET_CHANNELMASK(channelbitmask,4)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH06,IS_SET_CHANNELMASK(channelbitmask,5)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH07,IS_SET_CHANNELMASK(channelbitmask,6)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH08,IS_SET_CHANNELMASK(channelbitmask,7)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH09,IS_SET_CHANNELMASK(channelbitmask,8)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH10,IS_SET_CHANNELMASK(channelbitmask,9)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH11,IS_SET_CHANNELMASK(channelbitmask,10)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH12,IS_SET_CHANNELMASK(channelbitmask,11)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH13,IS_SET_CHANNELMASK(channelbitmask,12)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH14,IS_SET_CHANNELMASK(channelbitmask,13)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH15,IS_SET_CHANNELMASK(channelbitmask,14)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH16,IS_SET_CHANNELMASK(channelbitmask,15)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH17,IS_SET_CHANNELMASK(channelbitmask,16)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH18,IS_SET_CHANNELMASK(channelbitmask,17)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH19,IS_SET_CHANNELMASK(channelbitmask,18)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH20,IS_SET_CHANNELMASK(channelbitmask,19)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH21,IS_SET_CHANNELMASK(channelbitmask,20)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH22,IS_SET_CHANNELMASK(channelbitmask,21)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH23,IS_SET_CHANNELMASK(channelbitmask,22)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH24,IS_SET_CHANNELMASK(channelbitmask,23)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH25,IS_SET_CHANNELMASK(channelbitmask,24)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH26,IS_SET_CHANNELMASK(channelbitmask,25)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH27,IS_SET_CHANNELMASK(channelbitmask,26)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH28,IS_SET_CHANNELMASK(channelbitmask,27)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH29,IS_SET_CHANNELMASK(channelbitmask,28)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH30,IS_SET_CHANNELMASK(channelbitmask,29)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH31,IS_SET_CHANNELMASK(channelbitmask,30)); + DLG_FLAG_TO_CHECKBUTTON(hwnd,IDC_CHECKBOX_CH32,IS_SET_CHANNELMASK(channelbitmask,31)); + } + break; + default: + return FALSE; + } + case WM_SIZE: + return FALSE; + case WM_CLOSE: + break; + default: + break; + } + return FALSE; +} + +static int DlgOpenConfigFile(char *Filename, HWND hwnd) +{ + OPENFILENAME ofn; + char filename[MAXPATH + 256]; + char dir[MAXPATH + 256]; + int res; + + strncpy(dir,ConfigFileOpenDir,MAXPATH); + dir[MAXPATH-1] = '\0'; + strncpy(filename,Filename,MAXPATH); + filename[MAXPATH-1] = '\0'; + + memset(&ofn, 0, sizeof(OPENFILENAME)); + ofn.lStructSize = sizeof(OPENFILENAME); + ofn.hwndOwner = hwnd; + ofn.hInstance = hInst ; + ofn.lpstrFilter = + "config file\0*.cfg;*.config\0" + "all files\0*.*\0" + "\0\0"; + ofn.lpstrCustomFilter = NULL; + ofn.nMaxCustFilter = 0; + ofn.nFilterIndex = 1 ; + ofn.lpstrFile = filename; + ofn.nMaxFile = 256; + ofn.lpstrFileTitle = NULL; + ofn.nMaxFileTitle = 0; + if(dir[0] != '\0') + ofn.lpstrInitialDir = dir; + else + ofn.lpstrInitialDir = 0; + ofn.lpstrTitle = "Open Config File"; + ofn.Flags = OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_EXPLORER + | OFN_READONLY | OFN_HIDEREADONLY; + ofn.lpstrDefExt = 0; + ofn.lCustData = 0; + ofn.lpfnHook = 0; + ofn.lpTemplateName= 0; + + res = GetOpenFileName(&ofn); + strncpy(ConfigFileOpenDir,dir,MAXPATH); + ConfigFileOpenDir[MAXPATH-1] = '\0'; + if(res==TRUE){ + strncpy(Filename,filename,MAXPATH); + Filename[MAXPATH-1] = '\0'; + return 0; + } + else { + Filename[0] = '\0'; + return -1; + } +} + +static int DlgOpenOutputFile(char *Filename, HWND hwnd) +{ + OPENFILENAME ofn; + char filename[MAXPATH + 256]; + char dir[MAXPATH + 256]; + int res; + static char OutputFileOpenDir[MAXPATH+256]; + static int initflag = 1; + + if(initflag){ + OutputFileOpenDir[0] = '\0'; + initflag = 0; + } + strncpy(dir,OutputFileOpenDir,MAXPATH); + dir[MAXPATH-1] = '\0'; + strncpy(filename,Filename,MAXPATH); + filename[MAXPATH-1] = '\0'; + + memset(&ofn, 0, sizeof(OPENFILENAME)); + ofn.lStructSize = sizeof(OPENFILENAME); + ofn.hwndOwner = hwnd; + ofn.hInstance = hInst ; + ofn.lpstrFilter = + "wave file\0*.wav;*.wave;*.aif;*.aiff;*.aifc;*.au;*.snd;*.audio\0" + "all files\0*.*\0" + "\0\0"; + ofn.lpstrCustomFilter = NULL; + ofn.nMaxCustFilter = 0; + ofn.nFilterIndex = 1 ; + ofn.lpstrFile = filename; + ofn.nMaxFile = 256; + ofn.lpstrFileTitle = NULL; + ofn.nMaxFileTitle = 0; + if(dir[0] != '\0') + ofn.lpstrInitialDir = dir; + else + ofn.lpstrInitialDir = 0; + ofn.lpstrTitle = "Output File"; + ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY; + ofn.lpstrDefExt = 0; + ofn.lCustData = 0; + ofn.lpfnHook = 0; + ofn.lpTemplateName= 0; + + res = GetSaveFileName(&ofn); + strncpy(OutputFileOpenDir,dir,MAXPATH); + OutputFileOpenDir[MAXPATH-1] = '\0'; + if(res==TRUE){ + strncpy(Filename,filename,MAXPATH); + Filename[MAXPATH-1] = '\0'; + return 0; + } else { + Filename[0] = '\0'; + return -1; + } +} diff -ruN TiMidity++-2.4.1/interface/w32g_pref.h TiMidity++-2.5.0/interface/w32g_pref.h --- TiMidity++-2.4.1/interface/w32g_pref.h Thu Jan 1 09:00:00 1970 +++ TiMidity++-2.5.0/interface/w32g_pref.h Sat Aug 21 02:39:39 1999 @@ -0,0 +1,7 @@ +#ifndef __W32G2_PREF_H__ +#define __W32G2_PREF_H__ + +extern volatile int PrefWndDoing; +void PrefWndCreate(HWND hwnd); + +#endif /* __W32G2_PREF_H__ */ diff -ruN TiMidity++-2.4.1/interface/w32g_rec.h TiMidity++-2.5.0/interface/w32g_rec.h --- TiMidity++-2.4.1/interface/w32g_rec.h Thu Jan 1 09:00:00 1970 +++ TiMidity++-2.5.0/interface/w32g_rec.h Mon Aug 23 22:42:32 1999 @@ -0,0 +1,16 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by w32g_res.rc +// + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NO_MFC 1 +#define _APS_NEXT_RESOURCE_VALUE 2000 +#define _APS_NEXT_COMMAND_VALUE 3000 +#define _APS_NEXT_CONTROL_VALUE 4000 +#define _APS_NEXT_SYMED_VALUE 5000 +#endif +#endif diff -ruN TiMidity++-2.4.1/interface/w32g_res.h TiMidity++-2.5.0/interface/w32g_res.h --- TiMidity++-2.4.1/interface/w32g_res.h Fri Jul 30 19:22:38 1999 +++ TiMidity++-2.5.0/interface/w32g_res.h Wed Aug 25 13:32:30 1999 @@ -1,181 +1,210 @@ -#define IDC_STATIC -1 -#define IDD_DIALOG_SIMPLE_LIST 2001 -#define IDB_BITMAP_SLEEP 2002 -#define IDM_MENU_MAIN 2003 -#define IDC_SYSTABCONTROL_CHANNELS 1001 -#define IDC_GROUPBOX_CHANNELS 1002 -#define IDC_CHECKBOX_QUIET_CHANNEL 1003 -#define IDC_CHECKBOX_DRUMCHANNEL_MASK 1004 -#define IDC_CHECKBOX_DRUMCHANNELS 1005 -#define IDC_BUTTON_REVERSE 1006 -// available 1007..1009 -#define IDC_CHECKBOX_CH_BASE 1010 -#define IDC_CHECKBOX_CH1 1010 -#define IDC_CHECKBOX_CH2 1011 -#define IDC_CHECKBOX_CH3 1012 -#define IDC_CHECKBOX_CH4 1013 -#define IDC_CHECKBOX_CH5 1014 -#define IDC_CHECKBOX_CH6 1015 -#define IDC_CHECKBOX_CH7 1016 -#define IDC_CHECKBOX_CH8 1017 -#define IDC_CHECKBOX_CH9 1018 -#define IDC_CHECKBOX_CH10 1019 -#define IDC_CHECKBOX_CH11 1020 -#define IDC_CHECKBOX_CH12 1021 -#define IDC_CHECKBOX_CH13 1022 -#define IDC_CHECKBOX_CH14 1023 -#define IDC_CHECKBOX_CH15 1024 -#define IDC_CHECKBOX_CH16 1025 -#define IDC_CHECKBOX_CH17 1026 -#define IDC_CHECKBOX_CH18 1027 -#define IDC_CHECKBOX_CH19 1028 -#define IDC_CHECKBOX_CH20 1029 -#define IDC_CHECKBOX_CH21 1030 -#define IDC_CHECKBOX_CH22 1031 -#define IDC_CHECKBOX_CH23 1032 -#define IDC_CHECKBOX_CH24 1033 -#define IDC_CHECKBOX_CH25 1034 -#define IDC_CHECKBOX_CH26 1035 -#define IDC_CHECKBOX_CH27 1036 -#define IDC_CHECKBOX_CH28 1037 -#define IDC_CHECKBOX_CH29 1038 -#define IDC_CHECKBOX_CH30 1039 -#define IDC_CHECKBOX_CH31 1040 -#define IDC_CHECKBOX_CH32 1041 -// available 1042 -#define IDM_MHTIMIDITY 1043 -#define IDDEFAULT 1044 -#define IDGNU 1045 -#define IDTIMIDITY 1046 -#define IDSAVE 1047 - -#define VERSIONINFO_TIMIDITY 1048 - -#define IDC_TEXT_VERSION 1049 - -// available 1050..1147 - -#define IDC_EDIT_PLAYLIST_LABEL 1148 -#define IDC_BUTTON_APPLY 1149 -#define IDC_BUTTON_FILE 1150 -// available 1051..1155 -#define IDD_DIALOG_MAIN 1156 -#define IDD_DIALOG_DEBUG 1157 -#define IDD_DIALOG_CONSOLE 1158 -#define IDD_DIALOG_LIST 1159 -#define IDD_DIALOG_TRACER 1160 -#define IDD_DIALOG_DOC 1161 -#define IDD_DIALOG_SETTING 1162 - -// Main Wnd - -#define IDC_TOOLBARWINDOW_SUBWND 1163 -#define IDC_TOOLBARWINDOW_MAIN 1164 - -#define IDC_RECT_PANEL 1165 -#define IDC_RECT_CANVAS 1166 - -#define IDC_MSCTLS_UPDOWN1 1167 -#define IDC_BUTTON_DEC 1168 -#define IDC_BUTTON_INC 1169 -// available 1170 -#define IDC_EDIT_VERBOSITY 1171 -#define IDC_BUTTON_VERBOSITY 1172 -#define IDC_EDIT_TERMINAL 1173 -#define IDC_EDIT_DOC 1174 -#define IDD_DIALOG_WRD 1175 -#define IDD_DIALOG_SOUNDSPEC 1176 - -#define IDFLUSH 1177 -#define IDCLEAR 1178 - -#define IDC_BUTTON_PREV 1179 -#define IDC_BUTTON_NEXT 1180 -#define IDC_BUTTON_FORWARD 1181 -#define IDC_BUTTON_PLAY 1182 -#define IDC_BUTTON_BACK 1183 -#define IDC_BUTTON_STOP 1184 -#define IDC_CHECKBOX_PAUSE 1185 -#define IDC_BUTTON_SAVE 1186 -#define IDC_BUTTON_UNDO 1187 - -#define IDC_CHECKBOX_DEFAULT 1188 -#define IDC_CHECKBOX_VALID 1189 -#define IDC_CHECKBOX_DEBUG_WND 1190 -#define IDC_CHECKBOX_DEBUG_WND_VALID 1191 -#define IDC_CHECKBOX_SOUNDSPEC 1192 -#define IDC_CHECKBOX_CONFIG 1193 - -#define IDC_EDIT_FILENAME 1194 -#define IDC_EDIT_PLAYLISTFILE 1195 -#define IDC_EDIT_VEBOSITY 1196 - -#define IDC_LISTBOX_PLAYLIST 1197 - -#define IDM_MFOPENFILE 1198 -#define IDM_MFOPENDIR 1199 -#define IDM_MFLOADPLAYLIST 1200 -#define IDM_MFSAVEPLAYLISTAS 1201 -#define IDM_MFEXIT 1202 -#define IDM_MCLOADINIFILE 1203 -#define IDM_MCSAVEINIFILE 1204 -#define IDM_MWPLAYLIST 1205 -#define IDM_MWTRACER 1206 -#define IDM_MWDOCUMENT 1207 -#define IDM_MWWRDTRACER 1208 -#define IDM_MWSOUNDSPEC 1209 -#define IDM_MWCONSOLE 1210 -#define IDM_MWDEBUG 1211 -#define IDM_MHTOPIC 1212 -#define IDM_MHHELP 1213 -#define IDM_MHVERSION 1214 - -#define IDC_SCROLLBAR_PROGRESS 1215 -#define IDC_SCROLLBAR_VOLUME 1216 - -#define IDI_ICON_TIMIDITY 1217 -#define IDI_ICON_STOP 1218 - -#define IDB_BITMAP_MAIN_BUTTON 1219 -#define IDB_BITMAP_SUBWND_BUTTON 1220 - -#define IDC_CHECK_DOC 1221 -#define IDC_CHECK_WRD 1222 -#define IDC_CHECK_CONFIG 1223 -#define IDC_CHECK_TRACER 1224 -#define IDC_CHECK_LIST 1225 -#define IDC_CHECK_SOUNDSPEC 1226 -#define IDC_CHECK_CONSOLE 1227 - -#define IDC_BTN_DOC 1228 -#define IDC_BTN_WRD 1229 -#define IDC_BTN_CONFIG 1230 -#define IDC_BTN_TRACER 1231 -#define IDC_BTN_LIST 1232 -#define IDC_BTN_SOUNDSPEC 1233 - - -#define IDM_SETTING 1234 -#define IDC_CHECKBOX_CHORUS 1235 -#define IDC_CHECKBOX_REVERB 1236 -#define IDC_CHECKBOX_DELAY_EFFECT 1237 -#define IDC_CHECKBOX_FREE_INST 1238 -#define IDC_CHECKBOX_ANTIALIAS 1239 -#define IDC_EDIT_VOICES 1240 -#define IDC_RADIO_16BITS 1241 -#define IDC_RADIO_8BITS 1242 -#define IDC_RADIO_STEREO 1243 -#define IDC_RADIO_MONO 1244 -#define IDC_EDIT_SAMPLE_RATE 1245 -#define IDC_EDIT_NOISESHARPING 1246 -#define IDC_CHECKBOX_MODWHEEL 1247 -#define IDC_CHECKBOX_PORTAMENT 1248 -#define IDC_CHECKBOX_NRPNVIB 1249 -#define IDC_CHECKBOX_CHPRESS 1250 -#define IDC_CHECKBOX_OVOICE 1251 -#define IDC_CHECKBOX_LOADINST_PLAYING 1252 -#define IDC_COMBO_OUTPUT_MODE 1253 -#define IDC_EDIT_OUTPUT_FILE 1254 -#define IDC_BUTTON_REF 1255 -#define IDC_RADIO_ULAW 1256 -#define IDC_RADIO_ALAW 1257 +//{{NO_DEPENDENCIES}} +// Microsoft Developer Studio generated include file. +// Used by w32g_res.rc +// +#define IDC_CHECK_SEACHDIRRECURSIVE 1001 +#define IDC_CHECK_DOCWNDINDEPENDENT 1002 +#define IDC_CHECK_INIFILE_AUTOSAVE 1003 +#define IDD_DIALOG_WAVEFORM 1004 +#define IDC_CHECKBOX_CHORUS_LEVEL 1005 +#define IDC_CHECKBOX_GLOBAL_REVERB 1006 +#define IDC_CHECKBOX_REVERB_LEVEL 1007 +#define IDC_CHECKBOX_CH01 1008 +#define IDC_CHECKBOX_CH02 1009 +#define IDC_CHECKBOX_CH03 1010 +#define IDC_CHECKBOX_CH04 1011 +#define IDC_CHECKBOX_CH05 1012 +#define IDC_CHECKBOX_CH06 1013 +#define IDC_CHECKBOX_CH07 1014 +#define IDC_CHECKBOX_CH08 1015 +#define IDC_CHECKBOX_CH09 1016 +#define IDC_CHECKBOX_CH10 1017 +#define IDC_CHECKBOX_CH11 1018 +#define IDC_CHECKBOX_CH12 1019 +#define IDC_CHECKBOX_CH13 1020 +#define IDC_CHECKBOX_CH14 1021 +#define IDC_CHECKBOX_CH15 1022 +#define IDC_CHECKBOX_CH16 1023 +#define IDC_CHECKBOX_CH17 1024 +#define IDC_CHECKBOX_CH18 1025 +#define IDC_CHECKBOX_CH19 1026 +#define IDC_CHECKBOX_CH20 1027 +#define IDC_CHECKBOX_CH21 1028 +#define IDC_CHECKBOX_CH22 1029 +#define IDC_CHECKBOX_CH23 1030 +#define IDC_CHECKBOX_CH24 1031 +#define IDC_CHECKBOX_CH25 1032 +#define IDC_CHECKBOX_CH26 1033 +#define IDC_CHECKBOX_CH27 1034 +#define IDC_CHECKBOX_CH28 1035 +#define IDC_CHECKBOX_CH29 1036 +#define IDC_CHECKBOX_CH30 1037 +#define IDC_CHECKBOX_CH31 1038 +#define IDC_CHECKBOX_CH32 1039 +#define IDD_PREF_PLAYER 1040 +#define IDC_CHECKBOX_NOT_DRAG_START 1041 +#define IDC_CHECKBOX_NOT_CONTINUE 1042 +#define IDC_CHECKBOX_AUTOREFINE 1043 +#define IDC_CHECKBOX_AUTOUNIQ 1044 +#define IDC_CHECKBOX_AUTOQUIT 1045 +#define IDC_GROUPBOX_PLAYERMODE 1046 +#define IDC_RADIOBUTTON_JAPANESE 1047 +#define IDC_RADIOBUTTON_ENGLISH 1048 +#define IDC_GROUPBOX_LANGUAGE 1049 +#define IDC_EDIT_CONFIG_FILE 1050 +#define IDC_BUTTON_CONFIG_FILE 1051 +#define IDD_PREF_TIMIDITY1 1052 +#define IDD_PREF_TIMIDITY2 1053 +#define IDC_CHECKBOX_REDUCE_VOICE 1054 +#define IDC_CHECKBOX_SPECIAL_TONEBANK 1055 +#define IDC_GROUPBOX_DEFAULT_MIDI_TYPE 1058 +#define IDC_EDIT_OUTPUT_FILE 1059 +#define IDC_CHECKBOX_DRUM_CHANNEL_MASK 1060 +#define IDC_CHECKBOX_CTL_TRACE_PLAYING 1061 +#define IDD_PREF_TIMIDITY3 1062 +#define IDC_BUTTON_4 1063 +#define IDC_BUTTON_8 1064 +#define IDC_BUTTON_16 1065 +#define IDC_BUTTON_24 1066 +#define IDC_BUTTON_32 1067 +#define IDC_BUTTON_40 1068 +#define IDC_BUTTON_48 1069 +#define IDC_BUTTON_OUTPUT_FILE_DEL 1070 +#define IDC_CHECKBOX_LINEAR 1071 +#define IDC_CHECKBOX_BYTESWAP 1072 +#define IDC_CHECKBOX_UNSIGNED 1073 +#define IDC_CHECKBOX_SIGNED 1074 +#define IDC_CHECKBOX_ALAW 1075 +#define IDC_CHECKBOX_ULAW 1076 +#define IDC_CHECKBOX_16BITS 1077 +#define IDC_CHECKBOX_8BITS 1078 +#define IDC_BUTTON_HIGH 1079 +#define IDC_BUTTON_MIDDLE 1080 +#define IDC_BUTTON_LOW 1081 +#define IDC_BUTTON_OUTPUT_FILE 1082 +#define IDC_RADIOBUTTON_WIN32AUDIO 1083 +#define IDC_RADIOBUTTON_RIFF_WAVE 1084 +#define IDC_RADIOBUTTON_LIST_MIDI_EVENT 1085 +#define IDC_RADIOBUTTON_RAW_WAVEFORM 1086 +#define IDC_RADIOBUTTON_SUN_AUDIO 1087 +#define IDC_RADIOBUTTON_AIFF 1088 +#define IDC_GROUPBOX_OUTPUT 1089 +#define IDD_PREF_TIMIDITY4 1090 +#define IDC_CHECKBOX_DRUM_CHANNEL 1091 +#define IDC_EDIT_CONTROL_RATIO 1092 +#define IDC_EDIT_MODIFY_RELEASE 1093 +#define IDC_EDIT_AMPLIFICATION 1094 +#define IDC_EDIT_CACHE_SIZE 1095 +#define IDC_EDIT_SPECIAL_TONEBANK 1097 +#define IDC_EDIT_DEFAULT_TONEBANK 1098 +#define IDC_EDIT_REDUCE_VOICE 1099 +#define IDC_EDIT_CTL_VEBOSITY 1100 +#define IDC_EDIT_DELAY 1101 +#define IDC_RADIOBUTTON_DELAY_LEFT 1102 +#define IDC_RADIOBUTTON_DELAY_RIGHT 1103 +#define IDC_RADIOBUTTON_DELAY_CENTER 1104 +#define IDC_CHECKBOX_TRACETEXT 1105 +#define IDC_EDIT_REVERB 1106 +#define IDC_EDIT_CHORUS 1107 +#define IDC_BUTTON_UNIQ 1108 +#define IDC_BUTTON_REFINE 1109 +#define IDC_BUTTON_CLEAR 1110 +#define IDC_BUTTON_DOC 1111 +#define IDB_BITMAP_SLEEP 1112 +#define IDM_MENU_MAIN 1113 +#define IDC_CHECKBOX_QUIET_CHANNEL 1114 +#define IDM_MHTIMIDITY 1115 +#define IDDEFAULT 1116 +#define IDD_DIALOG_MAIN 1117 +#define IDC_EDIT_INFO 1118 +#define IDD_DIALOG_DEBUG 1119 +#define IDC_BUTTON_VARIABLES_CHECK 1120 +#define IDC_BUTTON_HEAP_CHECK 1121 +#define IDC_BUTTON_EXITPROCESS 1122 +#define IDC_BUTTON_EXIT 1123 +#define IDD_DIALOG_CONSOLE 1124 +#define IDD_DIALOG_CONSOLE_EN 1125 +#define IDD_DIALOG_TRACER 1126 +#define IDD_DIALOG_DOC 1127 +#define IDD_DIALOG_DOC_EN 1128 +#define IDD_DIALOG_SETTING 1129 +#define IDD_DIALOG_SIMPLE_LIST 1130 +#define IDD_DIALOG_SIMPLE_LIST_EN 1131 +#define IDC_TOOLBARWINDOW_SUBWND 1132 +#define IDC_TOOLBARWINDOW_MAIN 1133 +#define IDC_RECT_PANEL 1134 +#define IDC_RECT_CANVAS 1135 +#define IDC_BUTTON_DEC 1136 +#define IDC_BUTTON_INC 1137 +#define IDC_EDIT_VERBOSITY 1138 +#define IDC_BUTTON_VERBOSITY 1139 +#define IDC_EDIT 1140 +#define IDD_DIALOG_WRD 1141 +#define IDD_DIALOG_SOUNDSPEC 1142 +#define IDFLUSH 1143 +#define IDCLEAR 1144 +#define IDC_BUTTON_PREV 1145 +#define IDC_BUTTON_NEXT 1146 +#define IDC_CHECKBOX_VALID 1147 +#define IDC_CHECKBOX_DEBUG_WND 1148 +#define IDC_CHECKBOX_DEBUG_WND_VALID 1149 +#define IDC_EDIT_FILENAME 1150 +#define IDC_LISTBOX_PLAYLIST 1151 +#define IDM_MFOPENFILE 1152 +#define IDM_MFOPENDIR 1153 +#define IDM_MFLOADPLAYLIST 1154 +#define IDM_MFSAVEPLAYLISTAS 1155 +#define IDM_MFEXIT 1156 +#define IDM_MCLOADINIFILE 1157 +#define IDM_MCSAVEINIFILE 1158 +#define IDM_MWPLAYLIST 1159 +#define IDM_MWTRACER 1160 +#define IDM_MWDOCUMENT 1161 +#define IDM_MWWRDTRACER 1162 +#define IDM_MWSOUNDSPEC 1163 +#define IDM_MWCONSOLE 1164 +#define IDM_MWDEBUG 1165 +#define IDM_MHTOPIC 1166 +#define IDM_MHHELP 1167 +#define IDM_MHVERSION 1168 +#define IDC_SCROLLBAR_PROGRESS 1169 +#define IDC_SCROLLBAR_VOLUME 1170 +#define IDI_ICON_TIMIDITY 1171 +#define IDB_BITMAP_MAIN_BUTTON 1172 +#define IDB_BITMAP_SUBWND_BUTTON 1173 +#define IDC_CHECK_DOC 1174 +#define IDM_SETTING 1175 +#define IDC_CHECKBOX_CHORUS 1176 +#define IDC_CHECKBOX_REVERB 1177 +#define IDC_CHECKBOX_DELAY 1178 +#define IDC_CHECKBOX_FREE_INST 1179 +#define IDC_CHECKBOX_ANTIALIAS 1180 +#define IDC_EDIT_VOICES 1181 +#define IDC_RADIO_16BITS 1182 +#define IDC_RADIO_8BITS 1183 +#define IDC_RADIO_STEREO 1184 +#define IDC_RADIO_MONO 1185 +#define IDC_EDIT_SAMPLE_RATE 1186 +#define IDC_EDIT_NOISESHARPING 1187 +#define IDC_CHECKBOX_MODWHEEL 1188 +#define IDC_CHECKBOX_PORTAMENTO 1189 +#define IDC_CHECKBOX_NRPNVIB 1190 +#define IDC_CHECKBOX_CHPRESS 1191 +#define IDC_CHECKBOX_OVOICE 1192 +#define IDC_CHECKBOX_LOADINST_PLAYING 1193 +#define IDC_RADIOBUTTON_GM 1194 +#define IDC_RADIOBUTTON_GS 1195 +#define IDC_RADIOBUTTON_XG 1196 +#define IDC_CHECKBOX_NOT_LOOPING 1097 +#define IDC_STATIC -1 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NEXT_RESOURCE_VALUE 101 +#define _APS_NEXT_COMMAND_VALUE 40001 +#define _APS_NEXT_CONTROL_VALUE 2000 +#define _APS_NEXT_SYMED_VALUE 101 +#endif +#endif diff -ruN TiMidity++-2.4.1/interface/w32g_res.rc TiMidity++-2.5.0/interface/w32g_res.rc --- TiMidity++-2.4.1/interface/w32g_res.rc Sun Aug 1 03:24:26 1999 +++ TiMidity++-2.5.0/interface/w32g_res.rc Wed Aug 25 13:40:54 1999 @@ -1,304 +1,666 @@ -/**************************************************************************** - - -w32g_res.rc - -produced by Borland Resource Workshop - - -*****************************************************************************/ -#include +//Microsoft Developer Studio generated resource script. +// #include "w32g_res.h" +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS +#include "commctrl.h" +#include "w32g_rec.h" + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// 騰按忸 resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) +#ifdef _WIN32 +LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL +#pragma code_page(932) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + IDD_DIALOG_MAIN DIALOGEX 0, 0, 308, 64 -EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_NOPARENTNOTIFY | WS_EX_ACCEPTFILES | WS_EX_APPWINDOW | WS_EX_LEFTSCROLLBAR -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_OVERLAPPED | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX -//CLASS "" -CAPTION "TiMidity Windows32 GUI" +STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_MINIMIZEBOX | WS_VISIBLE | + WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_NOPARENTNOTIFY | WS_EX_ACCEPTFILES | + WS_EX_LEFTSCROLLBAR | WS_EX_APPWINDOW +CAPTION "TiMidity++ Win32GUI" MENU IDM_MENU_MAIN -FONT 8, "MS Sans Serif", 400, 0 -LANGUAGE LANG_NEUTRAL , SUBLANG_NEUTRAL -{ -CONTROL "ToolBarMain", IDC_TOOLBARWINDOW_MAIN, "ToolbarWindow32", TBSTYLE_GROUP | CCS_NOPARENTALIGN | CCS_NODIVIDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 2, 46, 112, 16 - CONTROL "ToolBarSubWnd", IDC_TOOLBARWINDOW_SUBWND, "ToolbarWindow32", TBSTYLE_GROUP | CCS_NODIVIDER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 112, 46, 80, 16, 0 - CONTROL "ScrollBar_Pregress", IDC_SCROLLBAR_PROGRESS, "scrollbar", SBS_HORZ | WS_CHILD | WS_VISIBLE | WS_DISABLED, 192, 48, 98, 12, 0 - CONTROL "ScrollBar_Volume", IDC_SCROLLBAR_VOLUME, "scrollbar", SBS_VERT | WS_CHILD | WS_VISIBLE, 292, 0, 12, 60, 0 - CONTROL "PANEL", IDC_RECT_PANEL, "static", SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 0, 0, 220, 44, WS_EX_STATICEDGE - CONTROL "CANVAS", IDC_RECT_CANVAS, "static", SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 220, 0, 68, 44, WS_EX_STATICEDGE -} - -IDI_ICON_TIMIDITY ICON MOVEABLE "w32g_icon.ico" - -IDM_MENU_MAIN MENUEX -{ - POPUP "File(&F)" - { - MENUITEM "open File(&F)", IDM_MFOPENFILE - MENUITEM "open Directory(&D)", IDM_MFOPENDIR - MENUITEM SEPARATOR - MENUITEM "load Playlist(&P)", IDM_MFLOADPLAYLIST - MENUITEM "Save Playlist as(&S)", IDM_MFSAVEPLAYLISTAS - MENUITEM SEPARATOR - MENUITEM "eXit(&X)", IDM_MFEXIT - } - - POPUP "Config(&C)" - { - MENUITEM "Setting timidity", IDM_SETTING -/* - MENUITEM "ConfigB(&B)", 202 - MENUITEM "ConfigC(&C)", 203 - MENUITEM "ConfigD(&D)", 204 -*/ - MENUITEM SEPARATOR - MENUITEM "Load ini file(&L)", IDM_MCLOADINIFILE - MENUITEM "Save ini file(&S)", IDM_MCSAVEINIFILE - } - - POPUP "Window(&W)" - { - MENUITEM "Play list(&L)", IDM_MWPLAYLIST - MENUITEM "Tracer(&T)", IDM_MWTRACER - MENUITEM "Document(&D)", IDM_MWDOCUMENT - MENUITEM "Wrd tracer(&W)", IDM_MWWRDTRACER - MENUITEM "Sound spectogram(&S)", IDM_MWSOUNDSPEC - MENUITEM "Console(&C)", IDM_MWCONSOLE - } -// MENUITEM "deBug(&B)", IDM_MWDEBUG - - POPUP "Help(&H)" - { - MENUITEM "Version(&V)", IDM_MHVERSION - } -// MENUITEM "Topic(&T)", IDM_MHTOPIC -// MENUITEM "Help(&H)", IDM_MHHELP -// MENUITEM SEPARATOR -// MENUITEM "TiMidity(&T)", IDM_MHTIMIDITY - -} - -IDD_DIALOG_DEBUG DIALOGEX 0, 0, 240, 180 -STYLE DS_3DLOOK | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU -CAPTION "Debug Window (TiMidity Windows32 GUI)" -FONT 9, "lr o", 400, 0 -{ - CONTROL "C L E A R", IDCLEAR, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 136, 164, 96, 16 - CONTROL "VALID", IDC_CHECKBOX_DEBUG_WND_VALID, "button", BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 20, 164, 36, 16, 0 - CONTROL "Frame_Valid", -1, "static", SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 16, 164, 44, 16, 0 -} +FONT 8, "MS Sans Serif", 0, 0 +BEGIN + CONTROL "ToolBarMain",IDC_TOOLBARWINDOW_MAIN,"ToolbarWindow32", + WS_TABSTOP | 0x14c,2,46,112,17 + CONTROL "ToolBarSubWnd",IDC_TOOLBARWINDOW_SUBWND,"ToolbarWindow32", + WS_TABSTOP | 0x44,112,46,80,16 + SCROLLBAR IDC_SCROLLBAR_PROGRESS,190,48,100,12,WS_DISABLED + SCROLLBAR IDC_SCROLLBAR_VOLUME,292,0,12,60,SBS_VERT + CONTROL "",IDC_RECT_PANEL,"Static",SS_GRAYFRAME | SS_SUNKEN,0,0, + 220,44 + CONTROL "",IDC_RECT_CANVAS,"Static",SS_GRAYFRAME,220,0,68,44 +END + +#endif // 騰按忸 resources +///////////////////////////////////////////////////////////////////////////// + + +///////////////////////////////////////////////////////////////////////////// +// { resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_JPN) +#ifdef _WIN32 +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT +#pragma code_page(932) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +IDD_DIALOG_DEBUG DIALOGEX 0, 0, 240, 240 +STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU +CAPTION "Debug Window (TiMidity Win32GUI)" +FONT 9, "Times New Roman", 400, 0 +BEGIN + PUSHBUTTON "C L E A R",IDCLEAR,72,164,68,16,BS_CENTER + CONTROL "VALID",IDC_CHECKBOX_DEBUG_WND_VALID,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,20,164,36,16 + CONTROL "Frame_Valid",-1,"Static",SS_ETCHEDFRAME,16,164,44,16 + PUSHBUTTON "E X I T",IDC_BUTTON_EXIT,144,164,48,16,BS_CENTER | + WS_DISABLED + PUSHBUTTON "ExitProcess",IDC_BUTTON_EXITPROCESS,196,164,40,16, + BS_CENTER + CONTROL "Frame2",-1,"Static",SS_ETCHEDFRAME,0,184,240,1 + PUSHBUTTON "Heaps Check",IDC_BUTTON_HEAP_CHECK,4,188,50,16, + BS_CENTER + PUSHBUTTON "Variables Check",IDC_BUTTON_VARIABLES_CHECK,60,188,50, + 16,BS_CENTER + EDITTEXT IDC_EDIT,0,0,240,160,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | + WS_VSCROLL | WS_HSCROLL +END IDD_DIALOG_CONSOLE DIALOGEX 0, 0, 240, 180 -STYLE DS_3DLOOK | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_BORDER -CAPTION "Console Window (TiMidity Windows32 GUI)" -FONT 9, "lr o", 400, 0 -{ - CONTROL "C L E A R", IDCLEAR, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 140, 164, 96, 16 - CONTROL "", IDC_EDIT_VERBOSITY, "edit", ES_LEFT | ES_OEMCONVERT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 44, 164, 16, 16, 0 - CONTROL "Frame_Verbosity", -1, "static", SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 4, 164, 80, 16, 0 - CONTROL "", IDC_EDIT_TERMINAL, "edit", ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP, 0, 0, 240, 160, WS_EX_STATICEDGE - CONTROL "VERBOSITY", IDC_BUTTON_VERBOSITY, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 4, 164, 40, 16, WS_EX_CLIENTEDGE - CONTROL "<<", IDC_BUTTON_DEC, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 60, 164, 12, 16 - CONTROL ">>", IDC_BUTTON_INC, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 72, 164, 12, 16 - CONTROL "VALID", IDC_CHECKBOX_VALID, "button", BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 92, 164, 32, 16, 0 - CONTROL "Frame_Valid", -1, "static", SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 88, 164, 40, 16, 0 -} - -IDD_DIALOG_DOC DIALOGEX 0, 0, 240, 180 -STYLE DS_3DLOOK | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU -CAPTION "Document Window (TiMidity Windows32 GUI)" +STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU +CAPTION "Console Window (TiMidity Win32GUI)" FONT 9, "lr o", 400, 0 -{ - CONTROL "VALID", IDC_CHECKBOX_DEBUG_WND_VALID, "button", BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 8, 164, 36, 16, 0 - CONTROL "Frame_Valid", -1, "static", SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 4, 164, 44, 16, 0 - CONTROL "", IDC_EDIT_FILENAME, "edit", ES_CENTER | ES_READONLY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 56, 164, 128, 16, 0 - CONTROL "<<", IDC_BUTTON_PREV, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 192, 164, 20, 16, 0 - CONTROL ">>", IDC_BUTTON_NEXT, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 216, 164, 20, 16, 0 - CONTROL "", IDC_EDIT_DOC, "edit", ES_LEFT | ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP, 0, 0, 236, 160, 0 -} - +BEGIN + PUSHBUTTON "C L E A R",IDCLEAR,140,164,96,16,BS_CENTER + EDITTEXT IDC_EDIT_VERBOSITY,44,164,16,16,ES_OEMCONVERT + CONTROL "VALID",IDC_CHECKBOX_VALID,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | WS_TABSTOP,92,164,32,16 + CONTROL "Frame_Verbosity",-1,"Static",SS_ETCHEDFRAME,4,164,80,16 + EDITTEXT IDC_EDIT,0,0,240,160,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | + WS_VSCROLL | WS_HSCROLL,WS_EX_STATICEDGE + PUSHBUTTON "VERBOSITY",IDC_BUTTON_VERBOSITY,4,164,40,16,BS_CENTER, + WS_EX_CLIENTEDGE + PUSHBUTTON "<<",IDC_BUTTON_DEC,60,164,12,16,BS_CENTER + PUSHBUTTON ">>",IDC_BUTTON_INC,72,164,12,16,BS_CENTER + CONTROL "Frame_Valid",-1,"Static",SS_ETCHEDFRAME,88,164,40,16 +END + +IDD_DIALOG_CONSOLE_EN DIALOGEX 0, 0, 240, 180 +STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU +CAPTION "Console Window (TiMidity Win32GUI)" +FONT 8, "Times New Roman", 400, 0 +BEGIN + PUSHBUTTON "C L E A R",IDCLEAR,140,164,96,16,BS_CENTER + EDITTEXT IDC_EDIT_VERBOSITY,44,164,16,16,ES_OEMCONVERT + CONTROL "VALID",IDC_CHECKBOX_VALID,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | WS_TABSTOP,92,164,32,16 + CONTROL "Frame_Verbosity",-1,"Static",SS_ETCHEDFRAME,4,164,80,16 + EDITTEXT IDC_EDIT,0,0,240,160,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | + WS_VSCROLL | WS_HSCROLL,WS_EX_STATICEDGE + PUSHBUTTON "VERBOSITY",IDC_BUTTON_VERBOSITY,4,164,40,16,BS_CENTER, + WS_EX_CLIENTEDGE + PUSHBUTTON "<<",IDC_BUTTON_DEC,60,164,12,16,BS_CENTER + PUSHBUTTON ">>",IDC_BUTTON_INC,72,164,12,16,BS_CENTER + CONTROL "Frame_Valid",-1,"Static",SS_ETCHEDFRAME,88,164,40,16 +END + +IDD_DIALOG_DOC DIALOG DISCARDABLE 0, 0, 330, 241 +STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU +CAPTION "Document Window (TiMidity Win32GUI)" +FONT 9, "lr " +BEGIN + EDITTEXT IDC_EDIT_FILENAME,103,223,160,16,ES_CENTER | ES_READONLY + PUSHBUTTON "<<",IDC_BUTTON_PREV,265,223,32,16,BS_CENTER + PUSHBUTTON ">>",IDC_BUTTON_NEXT,298,223,32,16,BS_CENTER + EDITTEXT IDC_EDIT,0,0,330,220,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | + WS_VSCROLL | WS_HSCROLL + EDITTEXT IDC_EDIT_INFO,0,223,101,16,ES_READONLY +END + +IDD_DIALOG_DOC_EN DIALOGEX 0, 0, 240, 180 +STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU +CAPTION "Document Window (TiMidity Win32GUI)" +FONT 9, "Times New Roman", 400, 0 +BEGIN + EDITTEXT IDC_EDIT_FILENAME,60,164,140,16,ES_CENTER | ES_READONLY + PUSHBUTTON "<<",IDC_BUTTON_PREV,204,164,16,16,BS_CENTER + PUSHBUTTON ">>",IDC_BUTTON_NEXT,220,164,16,16,BS_CENTER + EDITTEXT IDC_EDIT,0,0,236,160,ES_MULTILINE | ES_AUTOVSCROLL | + ES_AUTOHSCROLL | ES_READONLY | ES_WANTRETURN | + WS_VSCROLL | WS_HSCROLL + EDITTEXT IDC_EDIT_INFO,0,164,56,16,ES_READONLY +END IDD_DIALOG_WRD DIALOGEX 0, 0, 320, 220 -STYLE DS_3DLOOK | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU -CAPTION "Wrd Tracer Window (TiMidity Windows32 GUI)" -FONT 9, "lr o", 400, 0 -{ - CONTROL "FLUSH", IDFLUSH, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 256, 200, 60, 16 - CONTROL "VALID", IDC_CHECKBOX_DEBUG_WND_VALID, "button", BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 16, 200, 36, 16, 0 - CONTROL "Frame_Valid", -1, "static", SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 12, 200, 44, 16, 0 -} - - -IDD_DIALOG_LIST DIALOGEX 0, 0, 240, 180 -STYLE DS_3DLOOK | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU -CAPTION "Playlist Window (TiMidity Windows32 GUI)" -FONT 9, "lr o", 400, 0 -{ - CONTROL "CLEAR", IDCLEAR, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 192, 0, 24, 12 - CONTROL "UNDO", IDC_BUTTON_UNDO, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 168, 0, 24, 12, 0 - CONTROL "SAVE", IDC_BUTTON_SAVE, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 128, 0, 20, 12, 0 - CONTROL "PLAYLIST", IDC_LISTBOX_PLAYLIST, "listbox", WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 0, 16, 240, 132, 0 - CONTROL "", IDC_EDIT_PLAYLISTFILE, "edit", ES_LEFT | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 32, 0, 76, 12, 0 - CONTROL "FILE", IDC_BUTTON_FILE, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 108, 0, 20, 12, 0 - CONTROL "Default", IDC_CHECKBOX_DEFAULT, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 0, 0, 32, 12, 0 - CONTROL "APPLY", IDC_BUTTON_APPLY, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 216, 0, 24, 12, 0 - CONTROL "PLAY", IDC_BUTTON_PLAY, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE, 64, 164, 16, 16, 0 - CONTROL "PREV", IDC_BUTTON_PREV, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 164, 16, 16, 0 - CONTROL "NEXT", IDC_BUTTON_NEXT, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 96, 164, 16, 16, 0 - CONTROL "STOP", IDC_BUTTON_STOP, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 0, 164, 16, 16, 0 - CONTROL "BACK", IDC_BUTTON_BACK, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 48, 164, 16, 16, 0 - CONTROL "FORWARD", IDC_BUTTON_FORWARD, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE, 80, 164, 16, 16, 0 - CONTROL "PAUSE", IDC_CHECKBOX_PAUSE, "button", BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 16, 164, 16, 16, 0 - CONTROL "", IDC_EDIT_PLAYLIST_LABEL, "edit", ES_LEFT | ES_READONLY | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_TABSTOP, 116, 164, 124, 16, 0 - CONTROL "Frame1", -1, "static", SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 0, 148, 240, 16, 0 -} - +STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU +CAPTION "Wrd Tracer Window (TiMidity Win32GUI)" +FONT 9, "Times New Roman", 400, 0 +BEGIN + PUSHBUTTON "FLUSH",IDFLUSH,256,200,60,16,BS_CENTER + CONTROL "VALID",IDC_CHECKBOX_DEBUG_WND_VALID,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,16,200,36,16 + CONTROL "Frame_Valid",-1,"Static",SS_ETCHEDFRAME,12,200,44,16 +END IDD_DIALOG_SOUNDSPEC DIALOGEX 0, 0, 240, 180 -STYLE DS_3DLOOK | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU -CAPTION "Sound Spec Window (TiMidity Windows32 GUI)" -FONT 9, "lr o", 400, 0 -{ - CONTROL "C L E A R", IDCLEAR, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 136, 164, 96, 16 - CONTROL "VALID", IDC_CHECKBOX_DEBUG_WND_VALID, "button", BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 20, 164, 36, 16, 0 - CONTROL "Frame_Valid", -1, "static", SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 16, 164, 44, 16, 0 -} +STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU +CAPTION "Sound Spec Window (TiMidity Win32GUI)" +FONT 9, "Times New Roman", 400, 0 +BEGIN + PUSHBUTTON "C L E A R",IDCLEAR,136,164,96,16,BS_CENTER + CONTROL "VALID",IDC_CHECKBOX_DEBUG_WND_VALID,"Button", + BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_TABSTOP,20,164,36,16 + CONTROL "Frame_Valid",-1,"Static",SS_ETCHEDFRAME,16,164,44,16 +END IDD_DIALOG_TRACER DIALOGEX 0, 0, 320, 220 -STYLE DS_3DLOOK | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU -CAPTION "Tracer Window (TiMidity Windows32 GUI)" +STYLE DS_3DLOOK | WS_CAPTION | WS_SYSMENU +CAPTION "Tracer Window (TiMidity Win32GUI)" +FONT 9, "Times New Roman", 400, 0 +BEGIN + PUSHBUTTON "FLUSH",IDFLUSH,256,200,60,16,BS_CENTER + CONTROL "VALID",IDC_CHECKBOX_VALID,"Button",BS_AUTOCHECKBOX | + BS_LEFTTEXT | WS_TABSTOP,16,200,36,16 + CONTROL "Frame_Valid",-1,"Static",SS_ETCHEDFRAME,12,200,44,16 +END + +IDD_DIALOG_SIMPLE_LIST DIALOGEX 0, 0, 240, 184 +STYLE DS_MODALFRAME | DS_3DLOOK | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_ACCEPTFILES +CAPTION "List Window (TiMidity Win32GUI)" FONT 9, "lr o", 400, 0 -{ - CONTROL "FLUSH", IDFLUSH, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 256, 200, 60, 16 - CONTROL "VALID", IDC_CHECKBOX_VALID, "button", BS_AUTOCHECKBOX | BS_LEFTTEXT | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 16, 200, 36, 16, 0 - CONTROL "Frame_Valid", -1, "static", SS_ETCHEDFRAME | WS_CHILD | WS_VISIBLE, 12, 200, 44, 16, 0 -} - - -IDD_DIALOG_SETTING DIALOGEX 0, 0, 355, 199 -EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_NOPARENTNOTIFY | WS_EX_ACCEPTFILES | WS_EX_APPWINDOW | WS_EX_LEFTSCROLLBAR -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_OVERLAPPED | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX -CAPTION "TiMidity Setting" +BEGIN + LISTBOX IDC_LISTBOX_PLAYLIST,0,0,240,172,LBS_HASSTRINGS | + LBS_WANTKEYBOARDINPUT | LBS_DISABLENOSCROLL | WS_VSCROLL | + WS_HSCROLL | WS_TABSTOP + PUSHBUTTON "DOC",IDC_BUTTON_DOC,0,172,52,12,BS_CENTER + PUSHBUTTON "CLEAR",IDC_BUTTON_CLEAR,188,172,52,12,BS_CENTER + PUSHBUTTON "REFINE",IDC_BUTTON_REFINE,136,172,40,12,BS_CENTER + PUSHBUTTON "UNIQ",IDC_BUTTON_UNIQ,96,172,40,12,BS_CENTER +END + +IDD_DIALOG_SIMPLE_LIST_EN DIALOGEX 0, 0, 240, 184 +STYLE DS_MODALFRAME | DS_3DLOOK | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_ACCEPTFILES +CAPTION "List Window (TiMidity Win32GUI)" +FONT 9, "Times New Roman", 400, 0 +BEGIN + LISTBOX IDC_LISTBOX_PLAYLIST,0,0,240,172,LBS_HASSTRINGS | + LBS_WANTKEYBOARDINPUT | LBS_DISABLENOSCROLL | WS_VSCROLL | + WS_HSCROLL | WS_TABSTOP + PUSHBUTTON "DOC",IDC_BUTTON_DOC,0,172,52,12,BS_CENTER + PUSHBUTTON "CLEAR",IDC_BUTTON_CLEAR,188,172,52,12,BS_CENTER + PUSHBUTTON "REFINE",IDC_BUTTON_REFINE,136,172,40,12,BS_CENTER + PUSHBUTTON "UNIQ",IDC_BUTTON_UNIQ,96,172,40,12,BS_CENTER +END + +IDD_PREF_PLAYER DIALOG DISCARDABLE 0, 0, 212, 92 +STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | + WS_POPUP | WS_VISIBLE | WS_CAPTION +FONT 9, "Times New Roman" +BEGIN + PUSHBUTTON "Config File",IDC_BUTTON_CONFIG_FILE,4,4,40,12,BS_CENTER + EDITTEXT IDC_EDIT_CONFIG_FILE,44,4,164,12,ES_MULTILINE | + ES_AUTOHSCROLL | ES_OEMCONVERT + GROUPBOX "Player Mode",IDC_GROUPBOX_PLAYERMODE,4,20,64,64, + WS_GROUP + CONTROL "Auto Quit",IDC_CHECKBOX_AUTOQUIT,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,8,32,44,8 + CONTROL "Auto Uniq",IDC_CHECKBOX_AUTOUNIQ,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,8,40,44,8 + CONTROL "Auto Refine",IDC_CHECKBOX_AUTOREFINE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,8,48,48,8 + GROUPBOX "Language",IDC_GROUPBOX_LANGUAGE,72,20,60,40,WS_GROUP + CONTROL "Japanese",IDC_RADIOBUTTON_JAPANESE,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,76,32,36,8 + CONTROL "English",IDC_RADIOBUTTON_ENGLISH,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,76,40,36,8 + LTEXT "Require Restart!",IDC_STATIC,76,48,52,8,NOT WS_GROUP + CONTROL "Not Continue",IDC_CHECKBOX_NOT_CONTINUE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,8,56,52,8 + CONTROL "Not Drag Start",IDC_CHECKBOX_NOT_DRAG_START,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,8,64,56,8 + GROUPBOX "Directory",IDC_STATIC,136,20,72,20 + CONTROL "Recursive Seach",IDC_CHECK_SEACHDIRRECURSIVE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,140,28,60,10 + GROUPBOX "Document Window",IDC_STATIC,136,44,72,20 + CONTROL "Independent Mode",IDC_CHECK_DOCWNDINDEPENDENT,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,140,52,64,10 + GROUPBOX "INI File",IDC_STATIC,136,68,72,20 + CONTROL "Auto Save",IDC_CHECK_INIFILE_AUTOSAVE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,140,76,45,10 + CONTROL "Not Looping",IDC_CHECKBOX_NOT_LOOPING,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,8,72,52,8 +END + +IDD_PREF_TIMIDITY1 DIALOG DISCARDABLE 0, 0, 212, 92 +STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | + WS_POPUP | WS_VISIBLE | WS_CAPTION FONT 9, "Times New Roman" -{ - GROUPBOX "Options",IDC_STATIC,8,8,336,88 - LTEXT "Maxmum voices",IDC_STATIC,16,18,46,8,NOT WS_GROUP - EDITTEXT IDC_EDIT_VOICES,64,16,24,12,ES_NUMBER +BEGIN CONTROL "Enable Chorus Control Effect",IDC_CHECKBOX_CHORUS, "Button",BS_AUTOCHECKBOX | BS_LEFT | BS_TOP | WS_TABSTOP, - 16,32,97,10 + 8,4,97,8 + CONTROL "Chorus Level",IDC_CHECKBOX_CHORUS_LEVEL,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,16,12,52,8 + EDITTEXT IDC_EDIT_CHORUS,68,12,24,10,ES_NUMBER CONTROL "Enable Reverb Control Effect",IDC_CHECKBOX_REVERB, "Button",BS_AUTOCHECKBOX | BS_LEFT | BS_TOP | WS_TABSTOP, - 16,48,97,10 - CONTROL "L&&R Delay Rotate Effect",IDC_CHECKBOX_DELAY_EFFECT, - "Button",BS_AUTOCHECKBOX | BS_LEFT | BS_TOP | WS_TABSTOP, - 16,64,91,10 - LTEXT "Noise Sharping Level",IDC_STATIC,16,82,59,8,NOT - WS_GROUP - EDITTEXT IDC_EDIT_NOISESHARPING,80,80,24,12,ES_NUMBER + 8,24,96,8 + CONTROL "Global Reverb",IDC_CHECKBOX_GLOBAL_REVERB,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,16,32,52,8 + CONTROL "Reverb Level",IDC_CHECKBOX_REVERB_LEVEL,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,16,40,52,8 + EDITTEXT IDC_EDIT_REVERB,68,38,24,10,ES_NUMBER + CONTROL "L&&R Delay Rotate Effect",IDC_CHECKBOX_DELAY,"Button", + BS_AUTOCHECKBOX | BS_LEFT | BS_TOP | WS_TABSTOP,8,52,91, + 8 + CONTROL "Left",IDC_RADIOBUTTON_DELAY_LEFT,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,8,60,28,8 + CONTROL "Right",IDC_RADIOBUTTON_DELAY_RIGHT,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,36,60,28,8 + CONTROL "Rotate",IDC_RADIOBUTTON_DELAY_CENTER,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,64,60,32,8 + LTEXT "Delay(msec)",IDC_STATIC,12,68,40,8,NOT WS_GROUP | + WS_TABSTOP + EDITTEXT IDC_EDIT_DELAY,52,68,44,10,ES_NUMBER + LTEXT "Noise Sharping Level (0..4)",IDC_STATIC,8,80,76,8,NOT + WS_GROUP | WS_TABSTOP + EDITTEXT IDC_EDIT_NOISESHARPING,84,78,16,10,ES_NUMBER CONTROL "Enable Modulation Wheel",IDC_CHECKBOX_MODWHEEL,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,128,16,87,10 - CONTROL "Enable Portament",IDC_CHECKBOX_PORTAMENT,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,128,32,65,10 + BS_AUTOCHECKBOX | WS_TABSTOP,112,4,87,10 + CONTROL "Enable Portamento",IDC_CHECKBOX_PORTAMENTO,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,112,16,68,10 CONTROL "Enable NRPN Vibrato",IDC_CHECKBOX_NRPNVIB,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,128,48,77,10 + BS_AUTOCHECKBOX | WS_TABSTOP,112,28,77,10 CONTROL "Enable GM Channel pressure",IDC_CHECKBOX_CHPRESS,"Button", - BS_AUTOCHECKBOX | WS_TABSTOP,128,64,97,10 + BS_AUTOCHECKBOX | WS_TABSTOP,112,40,97,10 CONTROL "Enable Overlapped same voice",IDC_CHECKBOX_OVOICE, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,128,80,100,10 - CONTROL "Unload Instruments each MIDI",IDC_CHECKBOX_FREE_INST, - "Button",BS_AUTOCHECKBOX | BS_LEFT | BS_TOP | WS_TABSTOP, - 240,16,103,10 + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,112,52,100,10 + CONTROL "Enable Trace Text Meta Event",IDC_CHECKBOX_TRACETEXT, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,112,64,100,10 + LTEXT "Modify Release(0..1000)",IDC_STATIC,108,76,72,8,NOT + WS_GROUP | WS_TABSTOP + EDITTEXT IDC_EDIT_MODIFY_RELEASE,180,76,28,10 +END + +IDD_PREF_TIMIDITY2 DIALOG DISCARDABLE 0, 0, 212, 92 +STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | + WS_POPUP | WS_VISIBLE | WS_CAPTION +FONT 9, "Times New Roman" +BEGIN + LTEXT "Maximum voices",IDC_STATIC,4,4,52,8,NOT WS_GROUP + EDITTEXT IDC_EDIT_VOICES,56,4,24,10,ES_NUMBER + LTEXT "Amplification (%)",IDC_STATIC,4,16,52,8,NOT WS_GROUP + EDITTEXT IDC_EDIT_AMPLIFICATION,56,16,24,10 + CONTROL "Unload Instruments between files", + IDC_CHECKBOX_FREE_INST,"Button",BS_AUTOCHECKBOX | + BS_LEFT | BS_TOP | WS_TABSTOP,4,52,108,10 CONTROL "Antialiasing instrument",IDC_CHECKBOX_ANTIALIAS,"Button", - BS_AUTOCHECKBOX | BS_LEFT | BS_TOP | WS_TABSTOP,240,32, - 80,10 + BS_AUTOCHECKBOX | BS_LEFT | BS_TOP | WS_TABSTOP,4,28,80, + 10 CONTROL "Load Instruments while playing", IDC_CHECKBOX_LOADINST_PLAYING,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,240,48,103,10 - GROUPBOX "Output",IDC_STATIC,8,104,336,64 - COMBOBOX IDC_COMBO_OUTPUT_MODE,16,116,80,40,CBS_DROPDOWNLIST | - CBS_SORT | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_EDIT_OUTPUT_FILE,104,116,184,12 - PUSHBUTTON "Reference",IDC_BUTTON_REF,288,114,40,16 - GROUPBOX "Encoding",IDC_STATIC,16,136,160,24 - CONTROL "16 bits",IDC_RADIO_16BITS,"Button",BS_AUTORADIOBUTTON | - WS_GROUP | WS_TABSTOP,23,144,35,10 - CONTROL "8 bits",IDC_RADIO_8BITS,"Button",BS_AUTORADIOBUTTON | - WS_TABSTOP,60,144,31,10 - CONTROL "U-Law",IDC_RADIO_ULAW,"Button",BS_AUTORADIOBUTTON | - WS_TABSTOP,97,144,35,10 - CONTROL "A-Law",IDC_RADIO_ALAW,"Button",BS_AUTORADIOBUTTON | - WS_TABSTOP,134,144,35,10 - GROUPBOX "Channels",IDC_STATIC,181,136,82,24 + WS_TABSTOP,4,41,103,10 + LTEXT "Allocate Cache Size",IDC_STATIC,120,4,56,8,NOT WS_GROUP + EDITTEXT IDC_EDIT_CACHE_SIZE,176,4,32,10 + CONTROL "Auto Reduce Voice",IDC_CHECKBOX_REDUCE_VOICE,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,120,17,72,8 + LTEXT "Default tonebank",IDC_STATIC,120,28,52,8,NOT WS_GROUP + EDITTEXT IDC_EDIT_DEFAULT_TONEBANK,172,28,24,10 + CONTROL "Special Tonebank",IDC_CHECKBOX_SPECIAL_TONEBANK,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,120,41,60,8 + EDITTEXT IDC_EDIT_SPECIAL_TONEBANK,184,41,20,10 + GROUPBOX "Default Midi Type",IDC_GROUPBOX_DEFAULT_MIDI_TYPE,120, + 65,88,20 + CONTROL "GM",IDC_RADIOBUTTON_GM,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,128,73,24,8 + CONTROL "GS",IDC_RADIOBUTTON_GS,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,156,73,20,8 + CONTROL "XG",IDC_RADIOBUTTON_XG,"Button",BS_AUTORADIOBUTTON | + WS_TABSTOP,180,73,20,8 + CONTROL "Ctl Trace Playing",IDC_CHECKBOX_CTL_TRACE_PLAYING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,65,64,8 + LTEXT "Console Verbosity",IDC_STATIC,4,76,56,8,NOT WS_GROUP + EDITTEXT IDC_EDIT_CTL_VEBOSITY,60,76,20,10 + LTEXT "Control Ratio",IDC_STATIC,120,52,40,8,NOT WS_GROUP + EDITTEXT IDC_EDIT_CONTROL_RATIO,160,52,24,10 +END + +IDD_PREF_TIMIDITY3 DIALOG DISCARDABLE 0, 0, 212, 92 +STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | + WS_POPUP | WS_VISIBLE | WS_CAPTION +FONT 9, "Times New Roman" +BEGIN + GROUPBOX "Output Encoding",IDC_STATIC,4,0,204,88,WS_GROUP | + WS_TABSTOP + GROUPBOX "Precision",IDC_STATIC,8,8,152,28,WS_GROUP | WS_TABSTOP + CONTROL "8bits",IDC_CHECKBOX_8BITS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,12,16,28,8 + CONTROL "16bits",IDC_CHECKBOX_16BITS,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,12,24,28,8 + CONTROL "uLaw",IDC_CHECKBOX_ULAW,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,48,16,28,8 + CONTROL "aLaw",IDC_CHECKBOX_ALAW,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,48,24,28,8 + CONTROL "Signed",IDC_CHECKBOX_SIGNED,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,84,16,28,8 + CONTROL "Unsignd",IDC_CHECKBOX_UNSIGNED,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,84,24,36,8 + CONTROL "Byteswap",IDC_CHECKBOX_BYTESWAP,"Button", + BS_AUTOCHECKBOX | WS_TABSTOP,120,16,40,8 + CONTROL "Linear",IDC_CHECKBOX_LINEAR,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,120,24,32,8 + GROUPBOX "Channels",IDC_STATIC,164,8,40,28,WS_GROUP | WS_TABSTOP CONTROL "Stereo",IDC_RADIO_STEREO,"Button",BS_AUTORADIOBUTTON | - WS_GROUP | WS_TABSTOP,188,144,33,10 + WS_TABSTOP,168,16,33,10 CONTROL "Mono",IDC_RADIO_MONO,"Button",BS_AUTORADIOBUTTON | - WS_TABSTOP,228,144,33,10 - LTEXT "Sample rate",IDC_STATIC,271,146,33,8,NOT WS_GROUP - EDITTEXT IDC_EDIT_SAMPLE_RATE,305,144,29,12,ES_NUMBER - PUSHBUTTON "OK",IDOK,88,176,48,16,BS_CENTER - PUSHBUTTON "Default",IDDEFAULT,151,176,48,16 - PUSHBUTTON "Cancel",IDCANCEL,216,176,48,16,BS_CENTER -} - -IDD_DIALOG_ST_CHANNELS DIALOGEX 0, 0, 240, 180 -EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_CONTEXTHELP -STYLE DS_MODALFRAME | DS_3DLOOK | DS_CONTEXTHELP | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "TiMidity Setting" -FONT 8, "Times New Roman", 400, 0 -{ - CONTROL "drumchannel", IDC_GROUPBOX_CHANNELS, "button", BS_GROUPBOX | WS_CHILD | WS_VISIBLE | WS_GROUP, 20, 16, 88, 144, 0 - CONTROL "OK", IDOK, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 196, 168, 40, 12 - CONTROL "CANCEL", IDCANCEL, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 152, 168, 40, 12 - CONTROL "DEFAULT", IDDEFAULT, "BUTTON", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 4, 168, 44, 12 - CONTROL "TabControl_CHANNELS", IDC_SYSTABCONTROL_CHANNELS, "SysTabControl32", WS_CHILD | WS_VISIBLE, 0, 0, 240, 164 - CONTROL "Ch32", IDC_CHECKBOX_CH1, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 28, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH2, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 36, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH3, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 44, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH4, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 52, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH5, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 60, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH6, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 68, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH7, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 76, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH8, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 84, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH9, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 92, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH10, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 100, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH11, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 108, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH12, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 116, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH13, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 124, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH14, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 132, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH15, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 140, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH16, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 32, 148, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH17, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 28, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH18, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 36, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH19, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 44, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH20, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 52, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH21, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 60, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH22, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 68, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH23, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 76, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH24, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 84, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH25, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 92, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH26, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 100, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH27, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 108, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH28, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 116, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH29, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 124, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH30, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 132, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH31, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 140, 36, 8, 0 - CONTROL "Ch32", IDC_CHECKBOX_CH32, "button", BS_AUTOCHECKBOX | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 68, 148, 36, 8, 0 - CONTROL "drumchannels", IDC_CHECKBOX_DRUMCHANNELS, "button", BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 164, 92, 64, 16, 0 - CONTROL "drumchannel_mask", IDC_CHECKBOX_DRUMCHANNEL_MASK, "button", BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 164, 116, 64, 16, 0 - CONTROL "quiet_channel", IDC_CHECKBOX_QUIET_CHANNEL, "button", BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 164, 140, 64, 16, 0 - CONTROL "reverse", IDC_BUTTON_REVERSE, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 120, 136, 28, 20, 0 - CONTROL "SAVE", IDSAVE, "button", BS_PUSHBUTTON | BS_CENTER | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 104, 168, 44, 12, 0 -} - -IDB_BITMAP_MAIN_BUTTON BITMAP "w32g_btn.bmp" -IDB_BITMAP_SUBWND_BUTTON BITMAP "w32g_subbtn.bmp" -IDB_BITMAP_SLEEP BITMAP "w32g_sleep.bmp" - -IDD_DIALOG_SIMPLE_LIST DIALOGEX 0, 0, 280, 160 -EXSTYLE WS_EX_DLGMODALFRAME | WS_EX_ACCEPTFILES | WS_EX_CLIENTEDGE -STYLE DS_3DLOOK | WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME -CAPTION "List Window (TiMidity Windows32 GUI)" -FONT 9, "lr o", 400, 0 -{ - CONTROL "ListBoxPlaylist", IDC_LISTBOX_PLAYLIST, "listbox", LBS_NOTIFY | LBS_HASSTRINGS | LBS_WANTKEYBOARDINPUT | LBS_DISABLENOSCROLL | WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP | LBS_NOINTEGRALHEIGHT, 0,0,280,160 -} + WS_TABSTOP,168,24,33,10 + LTEXT "Sample rate",IDC_STATIC,8,36,36,12,WS_TABSTOP + EDITTEXT IDC_EDIT_SAMPLE_RATE,44,36,32,10,ES_NUMBER | WS_GROUP + PUSHBUTTON "L",IDC_BUTTON_LOW,80,36,12,8,BS_CENTER + PUSHBUTTON "M",IDC_BUTTON_MIDDLE,92,36,12,8,BS_CENTER + PUSHBUTTON "H",IDC_BUTTON_HIGH,104,36,12,8,BS_CENTER + PUSHBUTTON "4",IDC_BUTTON_4,120,36,12,8,BS_CENTER + PUSHBUTTON "8",IDC_BUTTON_8,132,36,12,8,BS_CENTER + PUSHBUTTON "16",IDC_BUTTON_16,144,36,12,8,BS_CENTER + PUSHBUTTON "24",IDC_BUTTON_24,156,36,12,8,BS_CENTER + PUSHBUTTON "32",IDC_BUTTON_32,168,36,12,8,BS_CENTER + PUSHBUTTON "40",IDC_BUTTON_40,180,36,12,8,BS_CENTER + PUSHBUTTON "48",IDC_BUTTON_48,192,36,12,8,BS_CENTER + GROUPBOX "Output",IDC_GROUPBOX_OUTPUT,8,44,196,28,WS_GROUP | + WS_TABSTOP + CONTROL "Win32 Audio",IDC_RADIOBUTTON_WIN32AUDIO,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,12,52,52,8 + CONTROL "List Midi Event",IDC_RADIOBUTTON_LIST_MIDI_EVENT,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,12,60,56,8 + CONTROL "Riff Wave File",IDC_RADIOBUTTON_RIFF_WAVE,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,72,52,56,8 + CONTROL "Raw Waveform File",IDC_RADIOBUTTON_RAW_WAVEFORM,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,72,60,72,8 + CONTROL "Sun Audio File",IDC_RADIOBUTTON_SUN_AUDIO,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,144,52,56,8 + CONTROL "Aiff File",IDC_RADIOBUTTON_AIFF,"Button", + BS_AUTORADIOBUTTON | WS_TABSTOP,144,60,36,8 + PUSHBUTTON "Output File",IDC_BUTTON_OUTPUT_FILE,8,72,36,12, + BS_CENTER | WS_GROUP + EDITTEXT IDC_EDIT_OUTPUT_FILE,44,72,144,12,ES_AUTOHSCROLL | + ES_OEMCONVERT | WS_GROUP + PUSHBUTTON "DEL",IDC_BUTTON_OUTPUT_FILE_DEL,188,72,16,12,BS_CENTER +END + +IDD_PREF_TIMIDITY4 DIALOGEX 0, 0, 212, 92 +STYLE DS_SYSMODAL | DS_3DLOOK | DS_CONTROL | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | + WS_POPUP | WS_VISIBLE | WS_CAPTION +FONT 9, "Times New Roman", 0, 0 +BEGIN + CONTROL "Ch01",IDC_CHECKBOX_CH01,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,8,12,28,8 + CONTROL "Ch02",IDC_CHECKBOX_CH02,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,8,20,28,8 + CONTROL "Ch03",IDC_CHECKBOX_CH03,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,8,28,28,8 + CONTROL "Ch04",IDC_CHECKBOX_CH04,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,8,36,28,8 + CONTROL "Ch05",IDC_CHECKBOX_CH05,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,8,44,28,8 + CONTROL "Ch06",IDC_CHECKBOX_CH06,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,8,52,28,8 + CONTROL "Ch07",IDC_CHECKBOX_CH07,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,8,60,28,8 + CONTROL "Ch08",IDC_CHECKBOX_CH08,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,8,68,28,8 + CONTROL "Ch09",IDC_CHECKBOX_CH09,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,36,12,28,8 + CONTROL "Ch10",IDC_CHECKBOX_CH10,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,36,20,28,8 + CONTROL "Ch11",IDC_CHECKBOX_CH11,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,36,28,28,8 + CONTROL "Ch12",IDC_CHECKBOX_CH12,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,36,36,28,8 + CONTROL "Ch13",IDC_CHECKBOX_CH13,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,36,44,28,8 + CONTROL "Ch14",IDC_CHECKBOX_CH14,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,36,52,28,8 + CONTROL "Ch15",IDC_CHECKBOX_CH15,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,36,60,28,8 + CONTROL "Ch16",IDC_CHECKBOX_CH16,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,36,68,28,8 + CONTROL "Ch17",IDC_CHECKBOX_CH17,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,64,12,28,8 + CONTROL "Ch18",IDC_CHECKBOX_CH18,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,64,20,28,8 + CONTROL "Ch19",IDC_CHECKBOX_CH19,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,64,28,28,8 + CONTROL "Ch20",IDC_CHECKBOX_CH20,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,64,36,28,8 + CONTROL "Ch21",IDC_CHECKBOX_CH21,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,64,44,28,8 + CONTROL "Ch22",IDC_CHECKBOX_CH22,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,64,52,28,8 + CONTROL "Ch23",IDC_CHECKBOX_CH23,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,64,60,28,8 + CONTROL "Ch24",IDC_CHECKBOX_CH24,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,64,68,28,8 + CONTROL "Ch25",IDC_CHECKBOX_CH25,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,92,12,28,8 + CONTROL "Ch26",IDC_CHECKBOX_CH26,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,92,20,28,8 + CONTROL "Ch27",IDC_CHECKBOX_CH27,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,92,28,28,8 + CONTROL "Ch28",IDC_CHECKBOX_CH28,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,92,36,28,8 + CONTROL "Ch29",IDC_CHECKBOX_CH29,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,92,44,28,8 + CONTROL "Ch30",IDC_CHECKBOX_CH30,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,92,52,28,8 + CONTROL "Ch31",IDC_CHECKBOX_CH31,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,92,60,28,8 + CONTROL "Ch32",IDC_CHECKBOX_CH32,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,92,68,28,8 + CONTROL "Drum Channel",IDC_CHECKBOX_DRUM_CHANNEL,"Button", + BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP,136,20,64,16 + CONTROL "Drum Channel Mask",IDC_CHECKBOX_DRUM_CHANNEL_MASK, + "Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP,136, + 40,64,16 + CONTROL "Quiet Channel",IDC_CHECKBOX_QUIET_CHANNEL,"Button", + BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP,136,60,64,16 +END + +IDD_DIALOG_WAVEFORM DIALOGEX 0, 0, 240, 120 +STYLE DS_MODALFRAME | DS_3DLOOK | WS_VISIBLE | WS_CAPTION +EXSTYLE WS_EX_DLGMODALFRAME +FONT 9, "Times New Roman", 400, 0 +BEGIN +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON_TIMIDITY ICON DISCARDABLE "w32g_icon.ico" + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +IDM_MENU_MAIN MENU DISCARDABLE +BEGIN + POPUP "File(&F)" + BEGIN + MENUITEM "open File(&F)", IDM_MFOPENFILE + MENUITEM "open Directory(&D)", IDM_MFOPENDIR + MENUITEM SEPARATOR + MENUITEM "load Playlist(&P)", IDM_MFLOADPLAYLIST + MENUITEM "Save Playlist as(&S)", IDM_MFSAVEPLAYLISTAS + MENUITEM SEPARATOR + MENUITEM "eXit(&X)", IDM_MFEXIT + END + POPUP "Config(&C)" + BEGIN + MENUITEM "Preference(&P)", IDM_SETTING + MENUITEM SEPARATOR + MENUITEM "Load ini file(&L)", IDM_MCLOADINIFILE + MENUITEM "Save ini file(&S)", IDM_MCSAVEINIFILE + END + POPUP "Window(&W)" + BEGIN + MENUITEM "play List(&L)", IDM_MWPLAYLIST + MENUITEM "Tracer(&T)", IDM_MWTRACER + MENUITEM "Document(&D)", IDM_MWDOCUMENT + MENUITEM "Wrd tracer(&W)", IDM_MWWRDTRACER + MENUITEM "sound Spectogram(&S)", IDM_MWSOUNDSPEC + MENUITEM "Console(&C)", IDM_MWCONSOLE + MENUITEM SEPARATOR + MENUITEM "deBug(&B)", IDM_MWDEBUG + END + POPUP "Help(&H)" + BEGIN + MENUITEM "Topic(&T)", IDM_MHTOPIC + MENUITEM "Help(&H)", IDM_MHHELP + MENUITEM SEPARATOR + MENUITEM "TiMidity(&T)", IDM_MHTIMIDITY + MENUITEM "Version(&V)", IDM_MHVERSION + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_BITMAP_MAIN_BUTTON BITMAP MOVEABLE PURE "w32g_btn.bmp" +IDB_BITMAP_SUBWND_BUTTON BITMAP MOVEABLE PURE "w32g_subbtn.bmp" +IDB_BITMAP_SLEEP BITMAP MOVEABLE PURE "w32g_sleep.bmp" + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE DISCARDABLE +BEGIN + "w32g_res.h\0" +END + +2 TEXTINCLUDE DISCARDABLE +BEGIN + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""commctrl.h""\r\n" + "#include ""w32g_rec.h""\r\n" + "\0" +END + +3 TEXTINCLUDE DISCARDABLE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO DISCARDABLE +BEGIN + IDD_DIALOG_DOC, DIALOG + BEGIN + BOTTOMMARGIN, 239 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE DISCARDABLE +BEGIN + IDM_MHVERSION "Version information of TiMidity++." + IDM_SETTING "Open the dialog of the modification of TiMidity parameters." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDM_MFOPENFILE "Open midi files and add them to the playlist." + IDM_MFOPENDIR "Not Supported." + IDM_MFLOADPLAYLIST "Not Supported." + IDM_MFSAVEPLAYLISTAS "Not Supported." + IDM_MFEXIT "Exit TiMidity." + IDM_MCLOADINIFILE "Load ini file to apply TiMidity parameters." + IDM_MCSAVEINIFILE "Save ini file to save TiMidity parameters." + IDM_MWPLAYLIST "Open/Close playlist window to select midi files." + IDM_MWTRACER "Not Supported." + IDM_MWDOCUMENT "Not Supported." + IDM_MWWRDTRACER "Not Supported." + IDM_MWSOUNDSPEC "Not Supported." + IDM_MWCONSOLE "Open/Close Console Window." + IDM_MWDEBUG "For debugging by developpers of TiMidity." + IDM_MHTOPIC "Not Supported." + IDM_MHHELP "Not Supported." +END + +STRINGTABLE DISCARDABLE +BEGIN + IDM_MHTIMIDITY "Copying of TiMidity++." +END + +#endif // { resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + Binary files TiMidity++-2.4.1/interface/w32g_sleep.bmp and TiMidity++-2.5.0/interface/w32g_sleep.bmp differ diff -ruN TiMidity++-2.4.1/interface/w32g_subwin.c TiMidity++-2.5.0/interface/w32g_subwin.c --- TiMidity++-2.4.1/interface/w32g_subwin.c Thu Jan 1 09:00:00 1970 +++ TiMidity++-2.5.0/interface/w32g_subwin.c Wed Aug 25 13:09:12 1999 @@ -0,0 +1,1107 @@ +/* + TiMidity++ -- MIDI to WAVE converter and player + Copyright (C) 1999 Masanao Izumo + Copyright (C) 1995 Tuukka Toivonen + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + w32g2_subwin.c: Written by Daisuke Aoki +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif /* HAVE_CONFIG_H */ +#include +#include +#include +#include +#ifndef NO_STRING_H +#include +#else +#include +#endif + +#if defined(__CYGWIN32__) || defined(__MINGW32__) +#define TPM_TOPALIGN 0x0000L +#endif + +#include "timidity.h" +#include "common.h" +#include "instrum.h" +#include "playmidi.h" +#include "readmidi.h" +#include "output.h" +#include "controls.h" +#include "tables.h" +#include "miditrace.h" +#include "reverb.h" +#ifdef SUPPORT_SOUNDSPEC +#include "soundspec.h" +#endif /* SUPPORT_SOUNDSPEC */ +#include "recache.h" +#include "arc.h" +#include "strtab.h" +#include "wrd.h" +#include "mid.defs" + +#include "w32g.h" +#include +#include +#include +#include "w32g_res.h" +#include "w32g_utl.h" +#include "w32g_pref.h" +#include "w32g_subwin.h" + +// *************************************************************************** +// +// Console Window +// +// *************************************************************************** + +// --------------------------------------------------------------------------- +// variables +static int ConsoleWndMaxSize = 64 * 1024; +static HFONT hFontConsoleWnd = NULL; + +// --------------------------------------------------------------------------- +// prototypes of functions +static BOOL CALLBACK ConsoleWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +static void ConsoleWndAllUpdate(void); +static void ConsoleWndVerbosityUpdate(void); +static void ConsoleWndVerbosityApply(void); +static void ConsoleWndValidUpdate(void); +static void ConsoleWndValidApply(void); +static void ConsoleWndVerbosityApplyIncDec(int num); + +// --------------------------------------------------------------------------- +// Global Functions + +// Initialization +void InitConsoleWnd(HWND hParentWnd) +{ + switch(PlayerLanguage){ + case LANGUAGE_ENGLISH: + hConsoleWnd = CreateDialog + (hInst,MAKEINTRESOURCE(IDD_DIALOG_CONSOLE_EN),hParentWnd,ConsoleWndProc); + break; + default: + case LANGUAGE_JAPANESE: + hConsoleWnd = CreateDialog + (hInst,MAKEINTRESOURCE(IDD_DIALOG_CONSOLE),hParentWnd,ConsoleWndProc); + break; + } + ShowWindow(hConsoleWnd,SW_HIDE); + UpdateWindow(hConsoleWnd); + ConsoleWndVerbosityApplyIncDec(0); + CheckDlgButton(hConsoleWnd, IDC_CHECKBOX_VALID, ConsoleWndFlag); + Edit_LimitText(GetDlgItem(hConsoleWnd,IDC_EDIT), ConsoleWndMaxSize); +} + +// Window Procedure +static BOOL CALLBACK +ConsoleWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + switch (uMess){ + case WM_INITDIALOG: + PutsConsoleWnd("Console Window\n"); + ConsoleWndAllUpdate(); + return FALSE; + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDCLOSE: + ShowWindow(hwnd, SW_HIDE); + MainWndUpdateConsoleButton(); + break; + case IDCLEAR: + ClearConsoleWnd(); + break; + case IDC_CHECKBOX_VALID: + ConsoleWndValidApply(); + break; + case IDC_BUTTON_VERBOSITY: + ConsoleWndVerbosityApply(); + break; + case IDC_BUTTON_INC: + ConsoleWndVerbosityApplyIncDec(1); + break; + case IDC_BUTTON_DEC: + ConsoleWndVerbosityApplyIncDec(-1); + break; + default: + break; + } + switch (HIWORD(wParam)) { + case EN_ERRSPACE: + ClearConsoleWnd(); + PutsConsoleWnd("### EN_ERRSPACE -> Clear! ###\n"); + break; + default: + break; + } + break; + case WM_SIZE: + ConsoleWndAllUpdate(); + return FALSE; + // See PreDispatchMessage() in w32g2_main.c + case WM_SYSKEYDOWN: + case WM_KEYDOWN: + { + int nVirtKey = (int)wParam; + switch(nVirtKey){ + case VK_ESCAPE: + SendMessage(hwnd,WM_CLOSE,0,0); + break; + } + } + break; + case WM_CLOSE: + ShowSubWindow(hConsoleWnd,0); +// ShowWindow(hConsoleWnd, SW_HIDE); + MainWndUpdateConsoleButton(); + break; + case WM_SETFOCUS: + HideCaret(hwnd); + break; + case WM_KILLFOCUS: + ShowCaret(hwnd); + break; + default: + return FALSE; + } + return FALSE; +} + +// puts() +void PutsConsoleWnd(char *str) +{ + HWND hwnd; + if(!IsWindow(hConsoleWnd) || !ConsoleWndFlag) + return; + hwnd = GetDlgItem(hConsoleWnd,IDC_EDIT); + PutsEditCtlWnd(hwnd,str); +} + +// printf() +void PrintfConsoleWnd(char *fmt, ...) +{ + HWND hwnd; + va_list ap; + if(!IsWindow(hConsoleWnd) || !ConsoleWndFlag) + return; + hwnd = GetDlgItem(hConsoleWnd,IDC_EDIT); + va_start(ap, fmt); + VprintfEditCtlWnd(hwnd,fmt,ap); + va_end(ap); +} + +// Clear +void ClearConsoleWnd(void) +{ + HWND hwnd; + if(!IsWindow(hConsoleWnd)) + return; + hwnd = GetDlgItem(hConsoleWnd,IDC_EDIT); + ClearEditCtlWnd(hwnd); +} + +// --------------------------------------------------------------------------- +// Static Functions + +static void ConsoleWndAllUpdate(void) +{ + ConsoleWndVerbosityUpdate(); + ConsoleWndValidUpdate(); + Edit_LimitText(GetDlgItem(hConsoleWnd,IDC_EDIT_VERBOSITY),3); + Edit_LimitText(GetDlgItem(hConsoleWnd,IDC_EDIT),ConsoleWndMaxSize); +} + +static void ConsoleWndValidUpdate(void) +{ + if(ConsoleWndFlag) + CheckDlgButton(hConsoleWnd, IDC_CHECKBOX_VALID, 1); + else + CheckDlgButton(hConsoleWnd, IDC_CHECKBOX_VALID, 0); +} + +static void ConsoleWndValidApply(void) +{ + if(IsDlgButtonChecked(hConsoleWnd,IDC_CHECKBOX_VALID)) + ConsoleWndFlag = 1; + else + ConsoleWndFlag = 0; +} + +static void ConsoleWndVerbosityUpdate(void) +{ + SetDlgItemInt(hConsoleWnd,IDC_EDIT_VERBOSITY,(UINT)ctl->verbosity, TRUE); +} + +static void ConsoleWndVerbosityApply(void) +{ + char buffer[64]; + HWND hwnd; + hwnd = GetDlgItem(hConsoleWnd,IDC_EDIT_VERBOSITY); + if(!IsWindow(hConsoleWnd)) return; + if(Edit_GetText(hwnd,buffer,60)<=0) return; + ctl->verbosity = atoi(buffer); + ConsoleWndVerbosityUpdate(); +} + +static void ConsoleWndVerbosityApplyIncDec(int num) +{ + if(!IsWindow(hConsoleWnd)) return; + ctl->verbosity += num; + RANGE(ctl->verbosity, -1, 4); + ConsoleWndVerbosityUpdate(); +} + + + +// **************************************************************************** +// +// List Window +// +// **************************************************************************** + +// --------------------------------------------------------------------------- +// Macros +#define IDM_LISTWND_REMOVE 4101 +#define IDM_LISTWND_PLAY 4102 +#define IDM_LISTWND_REFINE 4103 +#define IDM_LISTWND_UNIQ 4104 +#define IDM_LISTWND_CLEAR 4105 + +// --------------------------------------------------------------------------- +// Variables +static HANDLE hListWndPopupMenu; + +// --------------------------------------------------------------------------- +// Prototypes +static BOOL CALLBACK ListWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +static int ResetListWnd(void); +static int ClearListWnd(void); +static int UniqListWnd(void); +static int RefineListWnd(void); +static int DelListWnd(int nth); + +// --------------------------------------------------------------------------- +// Grobal Functions + +void InitListWnd(HWND hParentWnd) +{ + switch(PlayerLanguage){ + case LANGUAGE_ENGLISH: + hListWnd = CreateDialog + (hInst,MAKEINTRESOURCE(IDD_DIALOG_SIMPLE_LIST_EN),hParentWnd,ListWndProc); + break; + default: + case LANGUAGE_JAPANESE: + hListWnd = CreateDialog + (hInst,MAKEINTRESOURCE(IDD_DIALOG_SIMPLE_LIST),hParentWnd,ListWndProc); + break; + } + hListWndPopupMenu = CreatePopupMenu(); + AppendMenu(hListWndPopupMenu,MF_STRING,IDM_LISTWND_PLAY,"Play"); + AppendMenu(hListWndPopupMenu,MF_STRING,IDM_LISTWND_REMOVE,"Remove"); + ShowWindow(hListWnd,SW_HIDE); + UpdateWindow(hListWnd); + w32g_send_rc(RC_EXT_UPDATE_PLAYLIST, 0); +} + +// --------------------------------------------------------------------------- +// Static Functions + +static BOOL CALLBACK +ListWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + switch (uMess){ + case WM_INITDIALOG: + SendDlgItemMessage(hwnd,IDC_LISTBOX_PLAYLIST, + LB_SETHORIZONTALEXTENT,(WPARAM)1024,0); + w32g_send_rc(RC_EXT_UPDATE_PLAYLIST, 0); + return FALSE; + /* }EXLv` */ + case WM_SETCURSOR: + switch(HIWORD(lParam)){ + case WM_RBUTTONDOWN: + { + POINT point; + GetCursorPos(&point); + TrackPopupMenu(hListWndPopupMenu,TPM_TOPALIGN|TPM_LEFTALIGN, + point.x,point.y,0,hwnd,NULL); + } + break; + default: + break; + } + break; + case WM_COMMAND: + switch (HIWORD(wParam)) { + case IDCLOSE: + ShowWindow(hwnd, SW_HIDE); + MainWndUpdateListButton(); + break; + case LBN_DBLCLK: + SendMessage(hwnd,WM_COMMAND,(WPARAM)IDM_LISTWND_PLAY,0); + return FALSE; + default: + break; + } + switch (LOWORD(wParam)) { + case IDC_BUTTON_CLEAR: + if(MessageBox(hListWnd,"Clear playlist?","Playlist", + MB_YESNO)==IDYES) + w32g_send_rc(RC_EXT_CLEAR_PLAYLIST, 0); + return FALSE; + case IDC_BUTTON_REFINE: + if(MessageBox(hListWnd, + "Remove unsupported file types from the playlist?", + "Playlist",MB_YESNO) == IDYES) + w32g_send_rc(RC_EXT_REFINE_PLAYLIST, 0); + return FALSE; + case IDC_BUTTON_UNIQ: + if(MessageBox(hListWnd, + "Remove the same files from the playlist and make files of the playlist unique?", + "Playlist",MB_YESNO)==IDYES) + w32g_send_rc(RC_EXT_UNIQ_PLAYLIST, 0); + return FALSE; + case IDM_LISTWND_REMOVE: + w32g_send_rc(RC_EXT_DELETE_PLAYLIST, 0); + break; + case IDC_BUTTON_DOC: { + int cursel; + w32g_get_playlist_index(NULL, NULL, &cursel); + w32g_send_rc(RC_EXT_OPEN_DOC, cursel); + } + break; + case IDM_LISTWND_PLAY: + { + HWND hListBox = GetDlgItem(hListWnd, IDC_LISTBOX_PLAYLIST); + if(hListBox) + w32g_send_rc(RC_EXT_JUMP_FILE, ListBox_GetCurSel(hListBox)); + } + return FALSE; + default: + break; + } + break; + case WM_VKEYTOITEM: + { + UINT vkey = (UINT)LOWORD(wParam); + int nCaretPos = (int)HIWORD(wParam); + int num; + switch(vkey){ + case VK_SPACE: + case VK_RETURN: + w32g_send_rc(RC_EXT_JUMP_FILE, nCaretPos); + return -2; + case 0x50: // VK_P + SendMessage(hMainWnd,WM_COMMAND,MAKEWPARAM(IDM_PREV,0),0); + return -2; + case 0x4e: // VK_N + SendMessage(hMainWnd,WM_COMMAND,MAKEWPARAM(IDM_NEXT,0),0); + return -2; + case 0x45: // VK_E + SendMessage(hMainWnd,WM_COMMAND,MAKEWPARAM(IDM_STOP,0),0); + return -2; + case 0x53: // VK_S + SendMessage(hMainWnd,WM_COMMAND,MAKEWPARAM(IDM_PAUSE,0),0); + return -2; + case VK_ESCAPE: + SendMessage(hListWnd,WM_COMMAND,MAKEWPARAM(0,IDCLOSE),0); + return -2; + case 0x51: // VK_Q + if(MessageBox(hListWnd,"Quit TiMidity?","TiMidity",MB_ICONQUESTION|MB_YESNO)==IDYES) + SendMessage(hMainWnd,WM_CLOSE,0,0); + return -2; + case VK_BACK: + w32g_send_rc(RC_EXT_DELETE_PLAYLIST, -1); + case 0x44: // VK_D + w32g_send_rc(RC_EXT_DELETE_PLAYLIST, 0); + return -2; + case VK_DELETE: + w32g_send_rc(RC_EXT_ROTATE_PLAYLIST, -1); + return -2; + case VK_INSERT: + w32g_send_rc(RC_EXT_ROTATE_PLAYLIST, 1); + return -2; + case 0x46: // VK_F + return -2; + case 0x42: // VK_B + return -2; + case 0x4D: // VK_M + SendMessage(hListWnd,WM_COMMAND,MAKEWPARAM(IDC_BUTTON_REFINE,0),0); + return -2; + case 0x43: // VK_C + SendMessage(hListWnd,WM_COMMAND,MAKEWPARAM(IDC_BUTTON_CLEAR,0),0); + return -2; + case 0x55: // VK_U + SendMessage(hListWnd,WM_COMMAND,MAKEWPARAM(IDC_BUTTON_UNIQ,0),0); + return -2; + case 0x56: // VK_V + SendMessage(hListWnd,WM_COMMAND,MAKEWPARAM(IDC_BUTTON_DOC,0),0); + return -2; + case VK_F1: + case 0x48: // VK_H + MessageBox(hListWnd, + "Usage of key.\n" + "List window command.\n" + " ESC: Close Help H: Help\n" + "Player command.\n" + " SPACE/ENTER: PLAY E: Stop S: Pause\n" + " P: Prev N: Next\n" + "Playlist command.\n" + " M: Refine playlist U: Uniq playlist\n" + " C: Clear playlist\n" + " D: Remove playlist BS: Remove previous playlist\n" + " INS: Push Playlist DEL: Pop Playlist\n" + "TiMidity command.\n" + " Q: Quit\n" + ,"Help", MB_OK); + return -2; + default: + break; + } + return -1; + } + case WM_SIZE: + return FALSE; + // See PreDispatchMessage() in w32g2_main.c + case WM_SYSKEYDOWN: + case WM_KEYDOWN: + { + int nVirtKey = (int)wParam; + switch(nVirtKey){ + case VK_ESCAPE: + SendMessage(hwnd,WM_CLOSE,0,0); + break; + } + } + break; + case WM_CLOSE: + ShowSubWindow(hListWnd,0); +// ShowWindow(hListWnd, SW_HIDE); + MainWndUpdateListButton(); + break; + case WM_DROPFILES: + SendMessage(hMainWnd,WM_DROPFILES,wParam,lParam); + return 0; + default: + return FALSE; + } + return FALSE; +} + + + + +// *************************************************************************** +// Tracer Window + +BOOL CALLBACK TracerWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +void InitTracerWnd(HWND hParentWnd) +{ + hTracerWnd = CreateDialog + (hInst,MAKEINTRESOURCE(IDD_DIALOG_TRACER),hParentWnd,TracerWndProc); + ShowWindow(hTracerWnd,SW_HIDE); + UpdateWindow(hTracerWnd); +} + +BOOL CALLBACK +TracerWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + switch (uMess){ + case WM_INITDIALOG: + return FALSE; + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDCLOSE: + ShowWindow(hwnd, SW_HIDE); + MainWndUpdateTracerButton(); + break; + default: + return FALSE; + } + case WM_SIZE: + return FALSE; + case WM_CLOSE: + ShowWindow(hTracerWnd, SW_HIDE); + MainWndUpdateTracerButton(); + break; + default: + return FALSE; + } + return FALSE; +} + + + + +// **************************************************************************** +// Wrd Window + +BOOL CALLBACK WrdWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +void InitWrdWnd(HWND hParentWnd) +{ + hWrdWnd = CreateDialog + (hInst,MAKEINTRESOURCE(IDD_DIALOG_WRD),hParentWnd,WrdWndProc); + ShowWindow(hWrdWnd,SW_HIDE); + UpdateWindow(hWrdWnd); +} + +BOOL CALLBACK +WrdWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + switch (uMess){ + case WM_INITDIALOG: + return FALSE; + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDCLOSE: + ShowWindow(hwnd, SW_HIDE); + MainWndUpdateWrdButton(); + break; + default: + return FALSE; + } + case WM_SIZE: + return FALSE; + case WM_CLOSE: + ShowWindow(hWrdWnd, SW_HIDE); + MainWndUpdateWrdButton(); + break; + default: + return FALSE; + } + return FALSE; +} + + + + +//**************************************************************************** +// Doc Window + +#define DOCWND_DOCFILEMAX 10 +static struct DocWndInfo_ { + char DocFile[DOCWND_DOCFILEMAX][MAXPATH]; + int DocFileMax; + int DocFileCur; + char *Text; + int TextSize; +// HANDLE hMutex; +} DocWndInfo; +int DocWndIndependent = 0; /* Independent document viewer mode.(hLgr[[h) */ + +static BOOL CALLBACK DocWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +static void InitDocEditWnd(HWND hParentWnd); +static void DocWndConvertText(char *in, int in_size, char *out, int out_size); +static void DocWndSetText(char *text, int text_size); +static void DocWndSetInfo(char *info, char *filename); +static void DocWndInfoInit(void); +static int DocWndInfoLock(void); +static void DocWndInfoUnLock(void); + +void InitDocWnd(HWND hParentWnd); +void DocWndInfoReset(void); +void DocWndAddDocFile(char *filename); +void DocWndSetMidifile(char *filename); +void DocWndReadDoc(int num); +void DocWndReadDocNext(void); +void DocWndReadDocPrev(void); + +void InitDocWnd(HWND hParentWnd) +{ + switch(PlayerLanguage){ + case LANGUAGE_ENGLISH: + hDocWnd = CreateDialog + (hInst,MAKEINTRESOURCE(IDD_DIALOG_DOC_EN),hParentWnd,DocWndProc); + break; + default: + case LANGUAGE_JAPANESE: + hDocWnd = CreateDialog + (hInst,MAKEINTRESOURCE(IDD_DIALOG_DOC),hParentWnd,DocWndProc); + break; + } +// hDocWnd = CreateDialog +// (hInst,MAKEINTRESOURCE(IDD_DIALOG_DOC),hParentWnd,DocWndProc); + ShowWindow(hDocWnd,SW_HIDE); + UpdateWindow(hDocWnd); +} + +static BOOL CALLBACK +DocWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + switch (uMess){ + case WM_INITDIALOG: + PutsDocWnd("Doc Window\n"); + DocWndInfoInit(); + return FALSE; + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDCLOSE: + ShowWindow(hwnd, SW_HIDE); + MainWndUpdateDocButton(); + break; + case IDCLEAR: + ClearDocWnd(); + break; + default: + break; + } + switch (LOWORD(wParam)) { + case IDC_BUTTON_NEXT: + DocWndReadDocNext(); + break; + case IDC_BUTTON_PREV: + DocWndReadDocPrev(); + break; + default: + break; + } + return FALSE; + // See PreDispatchMessage() in w32g2_main.c + case WM_SYSKEYDOWN: + case WM_KEYDOWN: + { + int nVirtKey = (int)wParam; + switch(nVirtKey){ + case VK_ESCAPE: + SendMessage(hwnd,WM_CLOSE,0,0); + break; + } + } + break; + case WM_CLOSE: + ShowSubWindow(hDocWnd,0); +// ShowWindow(hDocWnd, SW_HIDE); + MainWndUpdateDocButton(); + break; + default: + return FALSE; + } + return FALSE; +} + +static char ControlCode[] = "@ABCDEFGHIJKLMNOPQRS"; +static void DocWndConvertText(char *in, int in_size, char *out, int out_size) +{ + char *buffer = (char *)malloc(sizeof(char)*out_size); + int buffer_size = out_size; + int i=0, j=0; + int nl = 0; + +// Convert Return Code CR, LF -> CR+LF , +// Control Code -> ^? (^@, ^A, ^B, ...). +stage1: + for(;;){ + if(i>=in_size || j>=buffer_size-1) + goto stage1_end; + if(nl==13){ + if(in[i]==13){ + if(j>=buffer_size-2) + goto stage1_end; + buffer[j++] = 13; + buffer[j++] = 10; + i++; + nl = 13; + continue; + } + if(in[i]==10){ + if(j>=buffer_size-2) + goto stage1_end; + buffer[j++] = 13; + buffer[j++] = 10; + i++; + nl = 0; + continue; + } + if(j>=buffer_size-2) + goto stage1_end; + buffer[j++] = 13; + buffer[j++] = 10; + if(in[i]>=0 && in[i]<=0x1f && in[i]!='\t'){ + if(j>=buffer_size-2) + goto stage1_end; + buffer[j++] = '^'; + buffer[j++] = ControlCode[in[i]]; + } else { + if(j>=buffer_size-1) + goto stage1_end; + buffer[j++] = in[i]; + } + i++; + nl = 0; + continue; + } + if(nl==10){ + if(in[i]==13||in[i]==10){ + if(j>=buffer_size-2) + goto stage1_end; + buffer[j++] = 13; + buffer[j++] = 10; + nl = in[i]; + i++; + continue; + } + if(j>=buffer_size-2) + goto stage1_end; + buffer[j++] = 13; + buffer[j++] = 10; + if(in[i]>=0 && in[i]<=0x1f && in[i]!='\t'){ + if(j>=buffer_size-2) + goto stage1_end; + buffer[j++] = '^'; + buffer[j++] = ControlCode[in[i]]; + } else { + if(j>=buffer_size-1) + goto stage1_end; + buffer[j++] = in[i]; + } + i++; + nl = 0; + continue; + } + if(in[i]==13||in[i]==10){ + nl = in[i]; + i++; + continue; + } + if(in[i]>=0 && in[i]<=0x1f && in[i]!='\t'){ + if(j>=buffer_size-2) + goto stage1_end; + buffer[j++] = '^'; + buffer[j++] = ControlCode[in[i]]; + } else { + if(j>=buffer_size-1) + goto stage1_end; + buffer[j++] = in[i]; + } + i++; + nl = 0; + continue; + } +stage1_end: + buffer[j] = '\0'; +// Convert KANJI Code. +stage2: +#ifndef MAX2 +#define MAX2(x,y) ((x)>=(y)?(x):(y)) +#endif + switch(PlayerLanguage){ + case LANGUAGE_ENGLISH: + default: + strncpy(out,buffer,MAX2(buffer_size-1,out_size-1)); + out[out_size-1] = '\0'; + break; + case LANGUAGE_JAPANESE: + strncpy(out,buffer,MAX2(buffer_size-1,out_size-1)); + nkf_convert(buffer,out,out_size-1,NULL,"SJIS"); + out[out_size-1] = '\0'; + break; + } +} + +#define BUFFER_SIZE (1024*64) +static void DocWndSetText(char *text, int text_size) +{ + char buffer[BUFFER_SIZE]; + int buffer_size = BUFFER_SIZE; + if(!IsWindow(hDocWnd) || !DocWndFlag) + return; + if(DocWndInfoLock()==FALSE) + return; +// Edit_SetText(GetDlgItem(hDocWnd,IDC_EDIT),text); + DocWndConvertText(text,text_size,buffer,buffer_size); + Edit_SetText(GetDlgItem(hDocWnd,IDC_EDIT),buffer); + DocWndInfoUnLock(); +} + +static void DocWndSetInfo(char *info, char *filename) +{ + char buffer[BUFFER_SIZE]; + int buffer_size = BUFFER_SIZE; + if(!IsWindow(hDocWnd) || !DocWndFlag) + return; + if(DocWndInfoLock()==FALSE) + return; + Edit_SetText(GetDlgItem(hDocWnd,IDC_EDIT_INFO),info); + Edit_SetText(GetDlgItem(hDocWnd,IDC_EDIT_FILENAME),filename); + DocWndInfoUnLock(); +} + +// *.doc *.txt *.hed archive#*.doc archive#*.txt archive#*.hed + +static void DocWndInfoInit(void) +{ +// DocWndInfo.hMutex = NULL; +// DocWndInfo.hMutex = CreateMutex(NULL,TRUE,NULL); + DocWndInfo.DocFileCur = 0; + DocWndInfo.DocFileMax = 0; + DocWndInfo.Text = NULL; + DocWndInfo.TextSize = 0; +// if(DocWndInfo.hMutex!=NULL) +// DocWndInfoUnLock(); +} + +// Success -> TRUE Failure -> FALSE +static int DocWndInfoLock(void) +{ +#if 0 + DWORD dwRes; + if(DocWndInfo.hMutex==NULL) + return FALSE; + dwRes = WaitForSingleObject(DocWndInfo.hMutex,10000); + if(dwRes==WAIT_OBJECT_0 || dwRes==WAIT_ABANDONED) + return TRUE; + else + return FALSE; +#else + return TRUE; +#endif +} + +static void DocWndInfoUnLock(void) +{ +// ReleaseMutex(DocWndInfo.hMutex); +} + +void DocWndInfoReset(void) +{ + if(DocWndInfoLock()==FALSE) + return; + DocWndInfo.DocFileCur = 0; + DocWndInfo.DocFileMax = 0; + if(DocWndInfo.Text!=NULL){ + free(DocWndInfo.Text); + DocWndInfo.Text = NULL; + } + DocWndInfo.TextSize = 0; + DocWndSetInfo("",""); + DocWndSetText("",0); +end: + DocWndInfoUnLock(); +} + +void DocWndAddDocFile(char *filename) +{ + struct timidity_file *tf = open_file(filename,0,0); +#ifdef W32GUI_DEBUG +PrintfDebugWnd("DocWndAddDocFile <- [%s]\n",filename); +#endif + if(tf==NULL) + return; + close_file(tf); + if(DocWndInfoLock()==FALSE) + return; + if(DocWndInfo.DocFileMax>=DOCWND_DOCFILEMAX-1) + goto end; + DocWndInfo.DocFileMax++; + strncpy(DocWndInfo.DocFile[DocWndInfo.DocFileMax-1],filename,MAXPATH); + DocWndInfo.DocFile[DocWndInfo.DocFileMax-1][MAXPATH-1] = '\0'; +#ifdef W32GUI_DEBUG +PrintfDebugWnd("DocWndAddDocFile -> (%d)[%s]\n",DocWndInfo.DocFileMax-1,DocWndInfo.DocFile[DocWndInfo.DocFileMax-1]); +#endif +end: + DocWndInfoUnLock(); +} + +void DocWndSetMidifile(char *filename) +{ + char buffer[MAXPATH+10]; + char *p; + if(DocWndInfoLock()==FALSE) + return; + strncpy(buffer,filename,MAXPATH-1); + buffer[MAXPATH-1] = '\0'; + p = strrchr(buffer,'.'); + if(p==NULL) + goto end; + *p = '\0'; + strcat(buffer,".txt"); + DocWndAddDocFile(buffer); + *p = '\0'; + strcat(buffer,".doc"); + DocWndAddDocFile(buffer); + *p = '\0'; + strcat(buffer,".hed"); + DocWndAddDocFile(buffer); +end: + DocWndInfoUnLock(); +} + +#define DOCWNDDOCSIZEMAX (64*1024) +void DocWndReadDoc(int num) +{ + struct timidity_file *tf; + if(DocWndInfoLock()==FALSE) + return; + if(num<1) + num = 1; + if(num>DocWndInfo.DocFileMax) + num = DocWndInfo.DocFileMax; + if(num==DocWndInfo.DocFileCur) + goto end; + DocWndInfo.DocFileCur = num; + tf = open_file(DocWndInfo.DocFile[DocWndInfo.DocFileCur-1],1,10); + if(tf==NULL) + goto end; + if(DocWndInfo.Text!=NULL){ + free(DocWndInfo.Text); + DocWndInfo.Text = NULL; + } + DocWndInfo.Text = (char *)malloc(sizeof(char)*DOCWNDDOCSIZEMAX); + DocWndInfo.Text[0] = '\0'; + DocWndInfo.TextSize = tf_read(DocWndInfo.Text,1,DOCWNDDOCSIZEMAX-1,tf); + DocWndInfo.Text[DocWndInfo.TextSize] = '\0'; + close_file(tf); + { + char info[1024]; + char *filename; + char *p1, *p2, *p3; + p1 = DocWndInfo.DocFile[DocWndInfo.DocFileCur-1]; + p2 = pathsep_strrchr(p1); + p3 = strrchr(p1,'#'); + if(p3!=NULL){ + sprintf(info,"(%02d/%02d) %s",DocWndInfo.DocFileCur,DocWndInfo.DocFileMax,p3+1); + filename = p2 + 1; + } else if(p2!=NULL){ + sprintf(info,"(%02d/%02d) %s",DocWndInfo.DocFileCur,DocWndInfo.DocFileMax,p2+1); + filename = p2 + 1; + } else { + sprintf(info,"(%02d/%02d) %s",DocWndInfo.DocFileCur,DocWndInfo.DocFileMax,p1+1); + filename = p1; + } + DocWndSetInfo(info,filename); + } + DocWndSetText(DocWndInfo.Text,DocWndInfo.TextSize); +end: + DocWndInfoUnLock(); +} + +void DocWndReadDocNext(void) +{ + int num; + if(DocWndInfoLock()==FALSE) + return; + num = DocWndInfo.DocFileCur + 1; + if(num>DocWndInfo.DocFileMax) + num = DocWndInfo.DocFileMax; + DocWndReadDoc(num); + DocWndInfoUnLock(); +} + +void DocWndReadDocPrev(void) +{ + int num; + if(DocWndInfoLock()==FALSE) + return; + num = DocWndInfo.DocFileCur - 1; + if(num<1) + num = 1; + DocWndReadDoc(num); + DocWndInfoUnLock(); +} + +void PutsDocWnd(char *str) +{ + HWND hwnd; + if(!IsWindow(hDocWnd) || !DocWndFlag) + return; + hwnd = GetDlgItem(hDocWnd,IDC_EDIT); + PutsEditCtlWnd(hwnd,str); +} + +void PrintfDocWnd(char *fmt, ...) +{ + HWND hwnd; + va_list ap; + if(!IsWindow(hDocWnd) || !DocWndFlag) + return; + hwnd = GetDlgItem(hDocWnd,IDC_EDIT); + va_start(ap, fmt); + VprintfEditCtlWnd(hwnd,fmt,ap); + va_end(ap); +} + +void ClearDocWnd(void) +{ + HWND hwnd; + if(!IsWindow(hDocWnd)) + return; + hwnd = GetDlgItem(hDocWnd,IDC_EDIT); + ClearEditCtlWnd(hwnd); +} + +//**************************************************************************** +// SoundSpec Window + +BOOL CALLBACK SoundSpecWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam); +void InitSoundSpecWnd(HWND hParentWnd) +{ + hSoundSpecWnd = CreateDialog + (hInst,MAKEINTRESOURCE(IDD_DIALOG_SOUNDSPEC),hParentWnd,SoundSpecWndProc); + ShowWindow(hSoundSpecWnd,SW_HIDE); + UpdateWindow(hSoundSpecWnd); +} + +BOOL CALLBACK +SoundSpecWndProc(HWND hwnd, UINT uMess, WPARAM wParam, LPARAM lParam) +{ + switch (uMess){ + case WM_INITDIALOG: + return FALSE; + case WM_COMMAND: + switch (LOWORD(wParam)) { + case IDCLOSE: + ShowWindow(hwnd, SW_HIDE); + MainWndUpdateSoundSpecButton(); + break; + default: + return FALSE; + } + case WM_SIZE: + return FALSE; + case WM_CLOSE: + ShowWindow(hSoundSpecWnd, SW_HIDE); + MainWndUpdateSoundSpecButton(); + break; + default: + return FALSE; + } + return FALSE; +} + +void w32g_open_doc(int close_if_no_doc) +{ + if(close_if_no_doc && DocWndInfo.DocFileMax <= 0) + ShowSubWindow(hDocWnd, 0); + else + { + DocWndReadDoc(1); + ShowSubWindow(hDocWnd, 1); + } +} + +void w32g_setup_doc(int idx) +{ + char *filename; + + DocWndInfoReset(); + if((filename = w32g_get_playlist(idx)) == NULL) + return; + DocWndSetMidifile(filename); +} diff -ruN TiMidity++-2.4.1/interface/w32g_subwin.h TiMidity++-2.5.0/interface/w32g_subwin.h --- TiMidity++-2.4.1/interface/w32g_subwin.h Thu Jan 1 09:00:00 1970 +++ TiMidity++-2.5.0/interface/w32g_subwin.h Wed Aug 25 11:20:04 1999 @@ -0,0 +1,39 @@ +#ifndef ___W32G_SUBWIN_H_ +#define ___W32G_SUBWIN_H_ + +// Console Window +void InitConsoleWnd(HWND hParentWnd); +void PutsConsoleWnd(char *str); +void PrintfConsoleWnd(char *fmt, ...); +void ClearConsoleWnd(void); + +// Tracer Window +void InitTracerWnd(HWND hParentWnd); + +// List Window +void InitListWnd(HWND hParentWnd); + +// Doc Window +extern int DocWndIndependent; +void InitDocWnd(HWND hParentWnd); +void DocWndInfoReset(void); +void DocWndAddDocFile(char *filename); +void DocWndSetMidifile(char *filename); +void DocWndReadDoc(int num); +void DocWndReadDocNext(void); +void DocWndReadDocPrev(void); + +void PutsDocWnd(char *str); +void PrintfDocWnd(char *fmt, ...); +void ClearDocWnd(void); + +// Wrd Window +void InitWrdWnd(HWND hParentWnd); + +// SoundSpec Window +void InitSoundSpecWnd(HWND hParentWnd); + +void w32g_setup_doc(int idx); +void w32g_open_doc(int close_if_no_doc); + +#endif /* ___W32G_SUBWIN_H_ */ diff -ruN TiMidity++-2.4.1/interface/w32g_utl.c TiMidity++-2.5.0/interface/w32g_utl.c --- TiMidity++-2.4.1/interface/w32g_utl.c Sun Aug 8 22:13:20 1999 +++ TiMidity++-2.5.0/interface/w32g_utl.c Wed Aug 25 18:27:54 1999 @@ -33,7 +33,7 @@ #else #include #endif -#include +//#####include #include #include "timidity.h" @@ -49,10 +49,10 @@ #endif /* SUPPORT_SOUNDSPEC */ #include "wrd.h" #include "w32g.h" -#if defined(__CYGWIN32__) || defined(__MINGW32__) +#include "w32g_utl.h" #include -#endif - +#include "strtab.h" +#include "url.h" extern int opt_default_mid; extern int effect_lr_mode; @@ -64,6 +64,12 @@ extern int opt_evil_mode; extern int opt_buffer_fragments; extern int32 opt_output_rate; +extern int PlayerLanguage; +extern volatile int data_block_time; // msec +extern volatile int data_block_num; +extern int DocWndIndependent; +extern int SeachDirRecursive; +extern int IniFileAutoSave; //*****************************************************************************/ @@ -306,6 +312,11 @@ strncpy(TracerFont,sp->TracerFont,255); TracerFont[255] = '\0'; // Apply font functions ... + + PlayerLanguage = sp->PlayerLanguage; + DocWndIndependent = sp->DocWndIndependent; + SeachDirRecursive = sp->SeachDirRecursive; + IniFileAutoSave = sp->IniFileAutoSave; } void @@ -361,6 +372,10 @@ sp->ListFont[255] = '\0'; strncpy(sp->TracerFont,TracerFont,255); sp->TracerFont[255] = '\0'; + sp->PlayerLanguage = PlayerLanguage; + sp->DocWndIndependent = DocWndIndependent; + sp->SeachDirRecursive = SeachDirRecursive; + sp->IniFileAutoSave = IniFileAutoSave; } extern int set_play_mode(char *cp); @@ -432,6 +447,7 @@ else if(play_mode->rate == 0) play_mode->rate = DEFAULT_RATE; voices = SetValue(st->voices, 1, MAX_VOICES); + auto_reduce_polyphony = st->auto_reduce_polyphony; quietchannels = st->quietchannels; if(opt_aq_max_buff) free(opt_aq_max_buff); @@ -454,7 +470,6 @@ opt_rcpcv_dll = st->opt_rcpcv_dll; #endif /* SMFCONV */ - opt_control_ratio = st->control_ratio; if(opt_control_ratio) control_ratio = SetValue(opt_control_ratio, 1, MAX_CONTROL_RATIO); @@ -463,6 +478,8 @@ control_ratio = play_mode->rate / CONTROLS_PER_SECOND; control_ratio = SetValue(control_ratio, 1, MAX_CONTROL_RATIO); } + data_block_time = st->data_block_time; + data_block_num = st->data_block_num; } void @@ -522,6 +539,14 @@ st->opt_ctl[j++] = 'a'; if(ctl->flags & CTLF_AUTOEXIT) st->opt_ctl[j++] = 'x'; + if(ctl->flags & CTLF_DRAG_START) + st->opt_ctl[j++] = 'd'; + if(ctl->flags & CTLF_AUTOUNIQ) + st->opt_ctl[j++] = 'u'; + if(ctl->flags & CTLF_AUTOREFINE) + st->opt_ctl[j++] = 'R'; + if(ctl->flags & CTLF_NOT_CONTINUE) + st->opt_ctl[j++] = 'C'; st->opt_ctl[j] = '\0'; st->opt_realtime_playing = SetFlag(opt_realtime_playing); st->reduce_voice_threshold = reduce_voice_threshold; @@ -541,6 +566,7 @@ st->opt_playmode[j] = '\0'; strncpy(st->OutputName,OutputName,sizeof(st->OutputName)); st->voices = SetValue(voices, 1, MAX_VOICES); + st->auto_reduce_polyphony = auto_reduce_polyphony; st->quietchannels = quietchannels; snprintf(st->opt_qsize,sizeof(st->opt_qsize),"%s/%s", opt_aq_max_buff,opt_aq_fill_buff); @@ -564,6 +590,8 @@ #if defined(__W32__) && defined(SMFCONV) st->opt_rcpcv_dll = opt_rcpcv_dll; #endif /* SMFCONV */ + st->data_block_time = data_block_time; + st->data_block_num = data_block_num; } @@ -650,7 +678,7 @@ if(GetModuleFileName(hInst, buffer, MAXPATH)) { - if((p = strrchr(buffer, '\\')) != NULL) + if((p = pathsep_strrchr(buffer)) != NULL) { p++; *p = '\0'; @@ -658,22 +686,19 @@ else { buffer[0] = '.'; - buffer[1] = '\\'; + buffer[1] = PATH_SEP; buffer[2] = '\0'; } } else { buffer[0] = '.'; - buffer[1] = '\\'; + buffer[1] = PATH_SEP; buffer[2] = '\0'; } strncpy(IniFile, buffer, MAXPATH); IniFile[MAXPATH] = '\0'; strcat(IniFile,"timpp32g.ini"); - - strcpy(ConfigFile, W32G_TIMIDITY_CFG); - st_default = (SETTING_TIMIDITY *)safe_malloc(sizeof(SETTING_TIMIDITY)); sp_default = (SETTING_PLAYER *)safe_malloc(sizeof(SETTING_PLAYER)); st_current = (SETTING_TIMIDITY *)safe_malloc(sizeof(SETTING_TIMIDITY)); @@ -694,7 +719,7 @@ { sprintf(buffer, "Ini file is not found, or old format is found.\n" -"Do you initialize ini file?\n\n" +"Do you want to initialize the ini file?\n\n" "Ini file path: %s", IniFile); @@ -704,12 +729,17 @@ w32g_has_ini_file = 1; } else + { w32g_has_ini_file = 0; + } } memcpy(sp_default, sp_current, sizeof(SETTING_PLAYER)); memcpy(st_default, st_current, sizeof(SETTING_TIMIDITY)); + memcpy(sp_temp, sp_current, sizeof(SETTING_PLAYER)); + memcpy(st_temp, st_current, sizeof(SETTING_TIMIDITY)); + w32g_i_init(); } @@ -729,6 +759,7 @@ src, rc->left, rc->top, SRCCOPY); } +#if 0 /* * TmColor */ @@ -795,30 +826,234 @@ SelectObject(hdc, hgdiobj_hpen); SelectObject(hdc, hgdiobj_hbrush); } +#endif +#ifndef S_ISDIR +#define S_ISDIR(mode) (((mode)&0xF000) == 0x4000) +#endif /* S_ISDIR */ int is_directory(char *path) { -#if defined(__CYGWIN32__) || defined(__MINGW32__) - struct stat st; - if(stat(path, &st) != -1) - return S_ISDIR(st.st_mode); -#endif - return GetFileAttributes(path) == FILE_ATTRIBUTE_DIRECTORY; + struct stat st; + if(*path == '@') /* special identifire for playlist file */ + return 0; + if(stat(path, &st) != -1) + return S_ISDIR(st.st_mode); + return GetFileAttributes(path) == FILE_ATTRIBUTE_DIRECTORY; } +/* Return: 0: - not modified + * 1: - modified + */ int directory_form(char *buffer) { - int len; + int len; - len = strlen(buffer); + len = strlen(buffer); + if(len == 0 || buffer[len - 1] == PATH_SEP) + return 0; + if(IS_PATH_SEP(buffer[len - 1])) + len--; + buffer[len++] = PATH_SEP; + buffer[len] = '\0'; + return 1; +} + +/* Return: 0: - not modified + * 1: - modified + */ +int nodirectory_form(char *buffer) +{ + char *lastp = buffer + strlen(buffer); + char *p = lastp; + + while(p > buffer && IS_PATH_SEP(*(p - 1))) + p--; + if(p == lastp) + return 0; + *p = '\0'; + return 1; +} + +void SettingCtlFlag(SETTING_TIMIDITY *st, int c, int onoff) +{ + int n; + char *opt; + + opt = st->opt_ctl + 1; + n = strlen(opt); + if(onoff) + { + if(strchr(opt, c) != NULL) + return; /* Already set */ + opt[n++] = c; + opt[n] = '\0'; + } + else + { + char *p; + if((p = strchr(opt, c)) == NULL) + return; /* Already removed */ + while(*(p + 1)) + { + *p = *(p + 1); + p++; + } + *p = '\0'; + } +} + + + + +int IsAvailableFilename(char *filename) +{ + char *p = strrchr(filename,'.'); + if(p == NULL) + return 0; + if( strcasecmp(p,".lzh")==0 || + strcasecmp(p,".zip")==0 || + strcasecmp(p,".gz")==0 || + strcasecmp(p,".mid")==0 || + strcasecmp(p,".rcp")==0 || + strcasecmp(p,".r36")==0 || + strcasecmp(p,".g18")==0 || + strcasecmp(p,".g36")==0 || + strcasecmp(p,".mod")==0 || +// strcasecmp(p,".hqx")==0 || + strcasecmp(p,".tar")==0 || + strcasecmp(p,".tgz")==0 || + strcasecmp(p,".lha")==0 || + strcasecmp(p,".mime")==0 || + strcasecmp(p,".smf")==0) + return 1; +// if(url_check_type(filename)!=-1) +// return 1; + return 0; +} + +/* ScanDirectoryFiles() works like UNIX find. */ +#define SCANDIR_MAX_DEPTH 32 +void ScanDirectoryFiles(char *basedir, + int (* file_proc)(char *pathname, /* (const) */ + void *user_val), + void *user_val) +{ + char baselen; + URL dir; + + static int depth = 0; + static int stop_flag; /* Stop scanning if true */ + static int error_disp; /* Whether error is displayed or not */ + static char pathbuf[MAXPATH]; /* pathname buffer */ + + if(depth == 0) /* Initialize variables at first recursive */ + { + stop_flag = 0; + error_disp = 0; + strcpy(pathbuf, basedir); + } + else if(depth > SCANDIR_MAX_DEPTH) /* Avoid infinite recursive */ + { + if(!error_disp) + { + /* Display this message at once */ + ctl->cmsg(CMSG_WARNING, VERB_NORMAL, + "%s: Directory is too deep", + basedir); + error_disp = 1; + } + return; /* Skip scanning this directory */ + } + + directory_form(pathbuf); + baselen = strlen(pathbuf); + if(baselen > sizeof(pathbuf) - 16) + { + /* Ignore too long file name */ + return; + } + + if((dir = url_dir_open(pathbuf)) == NULL) + { + ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "%s: Can't open directory", pathbuf); + return; + } + + if(file_proc(pathbuf, user_val)) + { + stop_flag = 1; /* Terminate */ + return; + } + + while(!stop_flag && + url_gets(dir, pathbuf + baselen, sizeof(pathbuf) - baselen - 1)) + { + if(strcmp(pathbuf + baselen, ".") == 0 || + strcmp(pathbuf + baselen, "..") == 0) + continue; + if(file_proc(pathbuf, user_val)) + { + stop_flag = 1; /* Terminate */ + break; + } + if(is_directory(pathbuf)) + { + /* into subdirectory */ + depth++; + ScanDirectoryFiles(pathbuf, file_proc, user_val); + depth--; + } + } + url_close(dir); +} + +#define EXPANDDIR_MAX_SIZE 100000 /* Limit of total bytes of the file names */ +static int expand_dir_proc(char *filename, void *v) +{ + void **user_val = (void **)v; + StringTable *st = (StringTable *)user_val[0]; + int *total_size = (int *)user_val[1]; + char *startdir = (char *)user_val[2]; + + if(IsAvailableFilename(filename)) + { + if(*total_size > EXPANDDIR_MAX_SIZE) + { + ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "%s: There are too many files.", + startdir); + return 1; /* Terminate */ + } + put_string_table(st, filename, strlen(filename)); + *total_size += strlen(filename); + } + return 0; +} + +char **FilesExpandDir(int *p_nfiles, char **files) +{ + StringTable st; + int i; + + init_string_table(&st); + for(i = 0; i < *p_nfiles; i++) + { + void *user_val[3]; + int total_size; + + total_size = 0; + user_val[0] = &st; + user_val[1] = &total_size; + user_val[2] = files[i]; + + if(is_directory(files[i])) + ScanDirectoryFiles(files[i], expand_dir_proc, user_val); + else + { + int len = strlen(files[i]); + put_string_table(&st, files[i], len); + } + } + *p_nfiles = st.nstring; + return make_string_array(&st); - if(buffer[len - 1] == PATH_SEP) - len--; -#if defined(__CYGWIN32__) || defined(__MINGW32__) - else if(buffer[len - 1] == '/') - len--; -#endif - buffer[len++] = PATH_SEP; - buffer[len] = '\0'; - return 1; } diff -ruN TiMidity++-2.4.1/interface/w32g_utl.h TiMidity++-2.5.0/interface/w32g_utl.h --- TiMidity++-2.4.1/interface/w32g_utl.h Sat Jul 31 15:14:42 1999 +++ TiMidity++-2.5.0/interface/w32g_utl.h Wed Aug 25 13:21:38 1999 @@ -2,7 +2,7 @@ #define ___W32G_UTL_H_ // ini & config -#define IniVersion "2.0" +#define IniVersion "2.1" typedef struct SETTING_PLAYER_ { // Main Window int InitMinimizeFlag; @@ -53,6 +53,11 @@ int DocMaxSize; char DocFileExt[256]; // End. + int PlayerLanguage; + int DocWndIndependent; + int SeachDirRecursive; + int IniFileAutoSave; +// End. } SETTING_PLAYER; typedef struct SETTING_TIMIDITY_ { @@ -99,6 +104,7 @@ char OutputName[MAXPATH + 32]; // o : string // P (ignore) int voices; // p + int auto_reduce_polyphony; // pa ChannelBitMask quietchannels; // Q char opt_qsize[16]; // q int32 modify_release; // R @@ -112,8 +118,20 @@ #endif // x (ignore) // Z (ignore) + /* for w32g_a.c */ + int data_block_time; + int data_block_num; +//?? int waveout_data_block_size; } SETTING_TIMIDITY; +// #### obsoleted +#define PLAYERMODE_AUTOQUIT 0x0001 +#define PLAYERMODE_AUTOREFINE 0x0002 +#define PLAYERMODE_AUTOUNIQ 0x0004 +#define PLAYERMODE_NOT_CONTINUE 0x0008 +#define PLAYERMODE_NOT_DRAG_START 0x0010 + + extern char *OutputName; extern void LoadIniFile(SETTING_PLAYER *sp, SETTING_TIMIDITY *st); @@ -163,13 +181,16 @@ extern void SaveSettingPlayer(SETTING_PLAYER *sp); extern void ApplySettingTiMidity(SETTING_TIMIDITY *st); extern void SaveSettingTiMidity(SETTING_TIMIDITY *st); +extern void SettingCtlFlag(SETTING_TIMIDITY *st, int opt_id, int onoff); extern int IniVersionCheck(void); extern void BitBltRect(HDC dst, HDC src, RECT *rc); +#if 0 extern TmColors tm_colors[ /* TMCC_SIZE */ ]; #define TmCc(c) (tm_colors[c].color) extern void TmInitColor(void); extern void TmFreeColor(void); extern void TmFillRect(HDC hdc, RECT *rc, int color); +#endif extern void w32g_initialize(void); extern int is_directory(char *path); extern int directory_form(char *path_in_out); diff -ruN TiMidity++-2.4.1/interface/wrdt_x.c TiMidity++-2.5.0/interface/wrdt_x.c --- TiMidity++-2.4.1/interface/wrdt_x.c Sat Jul 17 19:06:32 1999 +++ TiMidity++-2.5.0/interface/wrdt_x.c Wed Aug 18 02:08:56 1999 @@ -193,7 +193,7 @@ narg--; } strcat(p, ")"); - ctl->cmsg(CMSG_INFO, VERB_NOISY, "%s", p); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "%s", p); reuse_mblock(&tmpbuffer); } @@ -241,7 +241,7 @@ ctl->cmsg(CMSG_INFO, VERB_NOISY, "Loading magfile: [%s]", p); m = mag_create(p); if(m == NULL) - ctl->cmsg(CMSG_INFO, VERB_NOISY, "Can't load magfile: %s", p); + ctl->cmsg(CMSG_WARNING, VERB_NOISY, "Can't load magfile: %s", p); else { ctl->cmsg(CMSG_INFO, VERB_DEBUG, "MAG %s: [%d,%d,%d,%d]", @@ -289,23 +289,23 @@ break; case WRD_EXEC: /*I don't spawn another program*/ - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@EXEC(%s)", wrd_event2string(wrd_args[0])); break; case WRD_FADE: - x_Fade(wrd_args,wrd_argc-1,-1,-1); - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@FADE(%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2]); + x_Fade(wrd_args,wrd_argc-1,-1,-1); break; case WRD_FADESTEP: - x_Fade(NULL,0,wrd_args[0],wrd_args[1]); #if 0 - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@FADESTEP(%d/%d)", wrd_args[0], wrd_args[1]); #endif + x_Fade(NULL,0,wrd_args[0],wrd_args[1]); break; case WRD_GCIRCLE: - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GCIRCLE(%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5]); @@ -315,10 +315,10 @@ x_Gcls(wrd_args[0]); break; case WRD_GINIT: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "@GINIT()"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GINIT()"); break; case WRD_GLINE: - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GLINE(%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6]); @@ -326,12 +326,12 @@ x_Gline(wrd_args,wrd_argc-1); break; case WRD_GMODE: - x_GMode(wrd_args[0]); - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GMODE(%d)", wrd_args[0]); + x_GMode(wrd_args[0]); break; case WRD_GMOVE: - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GMOVE(%d,%d,%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6], wrd_args[7], wrd_args[8]); @@ -343,21 +343,22 @@ wrd_args[6], wrd_args[7], wrd_args[8]); break; case WRD_GON: - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GON(%d)", wrd_args[0]); + x_Gon(wrd_args[0]); break; case WRD_GSCREEN: - x_Gscreen(wrd_args[0],wrd_args[1]); - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@GSCREEN(%d,%d)", wrd_args[0], wrd_args[1]); + x_Gscreen(wrd_args[0],wrd_args[1]); break; case WRD_INKEY: inkey_flag = 1; - ctl->cmsg(CMSG_INFO, VERB_NOISY, "@INKEY - begin"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@INKEY - begin"); break; case WRD_OUTKEY: inkey_flag = 0; - ctl->cmsg(CMSG_INFO, VERB_NOISY, "@INKEY - end"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@INKEY - end"); break; case WRD_LOCATE: /*Length is At most 40*/ @@ -381,7 +382,7 @@ sprintf(p + strlen(p), "%d,", wrd_args[i]); } sprintf(p + strlen(p), "%d,%d)", wrd_args[3], wrd_args[4]); - ctl->cmsg(CMSG_INFO, VERB_NOISY, "%s", p); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "%s", p); m=mag_search(wrd_event2string(wrd_args[0])); if(m!=NULL){ x_Mag(m,wrd_args[1],wrd_args[2],wrd_args[3],wrd_args[4]); @@ -397,21 +398,21 @@ x_Pal(wrd_args,wrd_argc-1); break; case WRD_PALCHG: - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@PALCHG(%s)", wrd_event2string(wrd_args[0])); break; case WRD_PALREV: - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@PALREV(%d)", wrd_args[0]); x_Palrev(wrd_args[0]); break; case WRD_PATH: - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@PATH(%s)", wrd_event2string(wrd_args[0])); wrd_add_path(wrd_event2string(wrd_args[0]), 0); break; case WRD_PLOAD: - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@PLOAD(%s)", wrd_event2string(wrd_args[0])); x_PLoad(wrd_event2string(wrd_args[0])); break; @@ -420,11 +421,11 @@ len = strlen(p); text = (char *)new_segment(&tmpbuffer, SAFE_CONVERT_LENGTH(len)); code_convert(p, text, SAFE_CONVERT_LENGTH(len), NULL, NULL); - ctl->cmsg(CMSG_INFO, VERB_NOISY, "@REM %s", text); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@REM %s", text); reuse_mblock(&tmpbuffer); break; case WRD_REMARK: - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@REMARK(%s)", wrd_event2string(wrd_args[0])); break; case WRD_REST: /* Never call */ @@ -432,22 +433,26 @@ case WRD_SCREEN: /* Not supported */ break; case WRD_SCROLL: - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@SCROLL(%d,%d,%d,%d,%d,%d,%d)", wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], wrd_args[4], wrd_args[5], wrd_args[6]); break; case WRD_STARTUP: + ctl->cmsg(CMSG_INFO, VERB_DEBUG, + "@STARTUP(%d)", wrd_args[0]); wrd_init_path(); inkey_flag = 0; - ctl->cmsg(CMSG_INFO, VERB_NOISY, - "@STARTUP(%d)", wrd_args[0]); x_Startup(wrd_args[0]); load_default_graphics(current_file_info->filename); break; case WRD_STOP: /* Never call */ break; case WRD_TCLS: + ctl->cmsg(CMSG_INFO, VERB_DEBUG, + "@TCLS(%d,%d,%d,%d,%d,%d)", + wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], + wrd_args[4], wrd_args[5]); { char fillbuf[1024]; int xdiff; @@ -479,15 +484,11 @@ fillbuf[3]=0; AddLine(fillbuf,0); } - ctl->cmsg(CMSG_INFO, VERB_NOISY, - "@TCLS(%d,%d,%d,%d,%d,%d)", - wrd_args[0], wrd_args[1], wrd_args[2], wrd_args[3], - wrd_args[4], wrd_args[5]); break; case WRD_TON: - x_Ton(wrd_args[0]); - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "@TON(%d)", wrd_args[0]); + x_Ton(wrd_args[0]); break; case WRD_WAIT: /* Never call */ break; @@ -511,7 +512,6 @@ print_ecmd("LINE", wrd_args, 1); break; case WRD_ePAL: - print_ecmd("PAL", wrd_args, 2); break; case WRD_eREGSAVE: diff -ruN TiMidity++-2.4.1/interface/x_sherry.c TiMidity++-2.5.0/interface/x_sherry.c --- TiMidity++-2.4.1/interface/x_sherry.c Wed Aug 11 11:04:21 1999 +++ TiMidity++-2.5.0/interface/x_sherry.c Wed Aug 18 02:08:56 1999 @@ -141,7 +141,7 @@ static SherryPaletteEntry realPalette[MAX_PALETTES]; static uint8 *pseudoImage; /* For TrueColor */ - +static int draw_ctl_flag = True; static int err_to_stop = 0; @@ -404,16 +404,16 @@ if(error_flag == -1) ctl->cmsg(CMSG_ERROR, VERB_NOISY, "Sherry WRD: Can't work because of error"); + else if(error_flag == 1) /* Already initialized */ + { + XMapWindow(theDisplay, theWindow); + clear_image_pixmap(theRealScreen, basePixel); + XFlush(theDisplay); + return 0; + } return error_flag; } - if(theDisplay != NULL) - { - XMapWindow(theDisplay, theWindow); - XFlush(theDisplay); - return 1; - } - if(strchr(opts, 'p')) try_pseudo = 1; else @@ -423,7 +423,7 @@ { ctl->cmsg(CMSG_ERROR, VERB_NORMAL, "Sherry WRD: Can't open display: %s", XDisplayName(NULL)); - error_flag = 1; + error_flag = -1; return -1; } @@ -645,6 +645,8 @@ static void update_real_screen(int x, int y, int width, int height) { + if(!draw_ctl_flag) + return; #if XSHM_SUPPORT if(theRealScreen->shminfo.shmid != -1) { @@ -752,7 +754,7 @@ n = SRY_GET_SHORT(data) & 0xffff; #ifdef SRY_DEBUG -printf("Transfer palette %d\n", n); + printf("Transfer palette %d\n", n); #endif /* SRY_DEBUG */ if(virtualPalette[n] == NULL) @@ -1828,86 +1830,86 @@ if(skip_bit && aq_filled_ratio() < 0.2) return; - switch(op & 0x7F) /* ignore skip bit */ + switch(op & 0x7F) { case 0x01: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "sherry start"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "sherry start"); wrd_init_path(); x_sry_clear(); break; case 0x21: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "new pal 0x21"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "new pal 0x21"); sry_new_vpal(data, len); break; case 0x22: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "free pal 0x22"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "free pal 0x22"); sry_free_vpal(data, len); break; case 0x25: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "new vram 0x25"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "new vram 0x25"); sry_new_vram(data, len); break; case 0x26: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "free vram 0x26"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "free vram 0x26"); sry_free_vram(data, len); break; case 0x27: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "load PNG 0x27"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "load PNG 0x27"); sry_load_png(data); break; case 0x31: - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "palette trans 0x31 (%d)", SRY_GET_SHORT(data)); sry_pal_v2r(data); break; case 0x35: - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "image copy 0x35 (%d)", SRY_GET_SHORT(data)); sry_trans_all(data); break; case 0x36: - ctl->cmsg(CMSG_INFO, VERB_NOISY, + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "image copy 0x36 (%d)", SRY_GET_SHORT(data)); sry_trans_partial_real(data); break; case 0x41: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "set pal 0x41"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "set pal 0x41"); sry_pal_set(data, len); break; case 0x42: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "pal merge 0x42"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "pal merge 0x42"); sry_pal_merge(data); break; case 0x43: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "pal copy 0x43"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "pal copy 0x43"); sry_pal_copy(data); break; case 0x51: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "text 0x51"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "text 0x51"); sry_text(data); break; case 0x52: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "draw box 0x52"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "draw box 0x52"); sry_draw_box(data); break; case 0x53: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "draw line 0x53"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "draw line 0x53"); sry_draw_vline(data); break; case 0x54: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "draw line 0x54"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "draw line 0x54"); sry_draw_hline(data); break; case 0x55: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "draw line 0x55"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "draw line 0x55"); sry_draw_line(data); break; case 0x61: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "image copy 0x61"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "image copy 0x61"); sry_trans_partial(data); break; case 0x62: - ctl->cmsg(CMSG_INFO, VERB_NOISY, "image copy 0x62"); + ctl->cmsg(CMSG_INFO, VERB_DEBUG, "image copy 0x62"); sry_trans_partial_mask(data); break; @@ -1929,6 +1931,9 @@ void x_sry_redraw_ctl(int flag) { + draw_ctl_flag = flag; + if(draw_ctl_flag) + update_real_screen(0, 0, REAL_SCREEN_SIZE_X, REAL_SCREEN_SIZE_Y); } void x_sry_update(void) @@ -2006,8 +2011,8 @@ } /* allocate n-depth Z image data structure */ - ip->im->data = (char *)safe_malloc(ip->im->bytes_per_line * - ip->im->height); + ip->im->data = (char *)safe_large_malloc(ip->im->bytes_per_line * + ip->im->height); /* The next step is to create the shared memory segment. * The return value of shmat() should be stored both @@ -2206,7 +2211,6 @@ else { char c = sjis_c1; - putchar(sjis_c1); XSetFont(theDisplay, ip->gc, theFont8->fid); XDrawImageString(theDisplay, ip->pm, ip->gc, x - lbearing8, ascent8, &c, 1); @@ -2221,7 +2225,7 @@ #if XSHM_SUPPORT if(ip->shminfo.shmid != -1) { - XShmGetImage(theDisplay, ip->pm, ip->im, 0, 0, AllPlanes); + XSync(theDisplay, 0); /* Wait until ready */ return write_len; } #endif /* XSHM_SUPPORT */ diff -ruN TiMidity++-2.4.1/interface/x_wrdwindow.c TiMidity++-2.5.0/interface/x_wrdwindow.c --- TiMidity++-2.4.1/interface/x_wrdwindow.c Wed Aug 11 21:38:45 1999 +++ TiMidity++-2.5.0/interface/x_wrdwindow.c Tue Aug 24 20:53:25 1999 @@ -19,6 +19,7 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. x_wrdwindow.c - MIMPI WRD for X Window written by Takanori Watanabe. + - Modified by Masanao Izumo. */ /* @@ -41,6 +42,24 @@ #include "VTparse.h" #include "wrd.h" #include "controls.h" +#include "aq.h" + +#ifndef XSHM_SUPPORT +#if defined(HAVE_XSHMCREATEPIXMAP) && \ + defined(HAVE_X11_EXTENSIONS_XSHM_H) && \ + defined(HAVE_SYS_IPC_H) && \ + defined(HAVE_SYS_SHM_H) +#define XSHM_SUPPORT 1 +#else +#define XSHM_SUPPORT 0 +#endif +#endif /* XSHM_SUPPORT */ + +#if XSHM_SUPPORT +#include +#include +#include +#endif #define SIZEX WRD_GSCR_WIDTH #define SIZEY WRD_GSCR_HEIGHT @@ -80,32 +99,57 @@ extern int mbcstable[]; extern int smbcstable[]; +typedef struct _ImagePixmap +{ + Pixmap pm; + XImage *im; /* Shared pixmap image (NULL for non-support) */ +#if XSHM_SUPPORT + XShmSegmentInfo shminfo; +#endif /* XSHM_SUPPORT */ +} ImagePixmap; + static struct MyWin{ Display *d; Window w; XFontStruct *f8;/*8bit Font*/ XFontStruct *f16;/*16bit Font*/ - - GC gc, /* For any screens */ - gcgr, /* For Graphic screens */ - gcbmp; /* For bitmap */ + + GC gc, /* For any screens (nomask) */ + gcgr, /* For Graphic screens (masked by @gmode) */ + gcbmp; /* For bitmap (depth=1) */ + #define NUMVSCREEN 2 - Pixmap screens[NUMVSCREEN];/*Screen buffers*/ - Pixmap gscreen,appearscreen; - Pixmap palscreen; /*pallet screen for truecolor*/ - Pixmap workbmp; - Pixmap offscr; + Pixmap screens[NUMVSCREEN]; /* Graphics screen buffers (PseudoColor) */ + Pixmap active_screen, disp_screen; /* screens[0] or screens[1] */ + Pixmap offscr; /* Double buffer */ + Pixmap workbmp; /* Tempolary usage (bitmap) */ +/* active_screen: Graphics current draw screen. + * disp_screen: Graphics visiable screen. + * The color class of MIMPI graphics screen is 4 bit pseudo color. + * The plane bits is masked by (basepix | pmask[0..3]) + * + * offscr: Background pixmap of the main window. + * This screen is also used for double buffer. + * Redraw(): (disp_screen + text) ----> offscr ----> Window + * In TrueColor, it is needed to convert PseudoColor to TrueColor, here. + */ + + /* For PC98 screen emulation. + * Many text escape sequences are supported. + */ Linbuf **scrnbuf; int curline; int curcol; long curattr; + #define NUMPLANE 4 #define NUMPXL 16 #define MAXPAL 20 XColor txtcolor[TXTCOLORS],curcoltab[NUMPXL], gcolor[MAXPAL][NUMPXL],gcolorbase[NUMPXL]; - unsigned long basepix[1],pmask[NUMPLANE]; + unsigned long basepix, pmask[NUMPLANE], gscreen_plane_mask; int ton; + int gon; int gmode; #define TON_NOSHOW 0 Colormap cmap; @@ -135,102 +179,84 @@ }; static char *image_buffer; /* Used for @MAG or @PLOAD */ -static unsigned long gscreen_plane_mask; +Visual *theVisual; +int theScreen, theDepth; +int bytes_per_image_pixel; static int Parse(int); -static void Redraw(int,int,int,int,int); +static void Redraw(int,int,int,int); +static int RedrawText(Drawable,int,int,int,int); /* Redraw only text */ static void RedrawInject(int x,int y,int width,int height,int flag); +/**** ImagePixmap interfaces ****/ +static ImagePixmap *create_shm_image_pixmap(int width, int height); +static void free_image_pixmap(ImagePixmap *ip); + /* for truecolor */ static Bool truecolor; -static unsigned long pallets[MAXPAL][NUMPXL]; -#define rgb2pixel(xcolorptr) XAllocColor(mywin.d,mywin.cmap,xcolorptr) +static ImagePixmap *shm_screen; /* for TrueColor conversion */ +static unsigned long truecolor_palette[NUMPXL]; +static int shm_format; - /* ppixel : pseudo pixel value (each bit presents each pallet)*/ -/*#define pal2ppixel(palnum) ((unsigned long) (1L << (palnum)))*/ -static unsigned long pal2ppixel(int palnum) { - return(unsigned long) (1L << (palnum)); -} -#if 0 -static int ppixel2pal(unsigned long ppixel){ - int i=0; - if (!ppixel) return 0; - i++; - while(ppixel!=1){ - i++; - ppixel >> 1; // statement with no effect?? - } - return i; -} -static int pixel2pal(int pal,unsigned long pixel) -{ - int i; - for(i=0; ired=((val>>8)&0xf)*0x1111; + set->green=((val>>4)&0xf)*0x1111; + set->blue=(0xf&val)*0x1111; } -static void gscreen2palscreen(pallet) + +static int highbit(unsigned long ul) { - XImage *simg, *timg; - int x, y; - - simg = XGetImage(mywin.d, mywin.gscreen, - 0, 0, SIZEX, SIZEY, gscreen_plane_mask, ZPixmap); - timg = XGetImage(mywin.d, mywin.palscreen, - 0, 0, SIZEX, SIZEY, gscreen_plane_mask, ZPixmap); - if(!simg) return; - for(y = 0; y < SIZEY; y++){ - for(x = 0; x < SIZEX; x++){ - int p; - p = pixel2pal(pallet, XGetPixel(simg, x, y)); - XPutPixel(timg, x, y, p); - } - } - XPutImage(mywin.d, mywin.gscreen, mywin.gcgr, timg, - 0, 0, 0, 0, SIZEX, SIZEY); - XFree(simg); - XFree(timg); + int i; unsigned long hb; + hb = 0x80000000UL; + for(i = 31; ((ul & hb) == 0) && i >= 0; i--, ul<<=1) + ; + return i; } -#endif -static void palscreen2gscreen(pallet) + +static unsigned long trueColorPixel(unsigned long r, /* 0..255 */ + unsigned long g, /* 0..255 */ + unsigned long b) /* 0..255 */ { - int i; - Pixmap colorpix; + static int rs, gs, bs; - colorpix = XCreatePixmap(mywin.d, mywin.palscreen, SIZEX, SIZEY, - DefaultDepth(mywin.d, DefaultScreen(mywin.d))); + if(r == 0xffffffff) /* for initialize */ + { + rs = 15 - highbit(theVisual->red_mask); + gs = 15 - highbit(theVisual->green_mask); + bs = 15 - highbit(theVisual->blue_mask); + return 0; + } + + r *= 257; /* 0..65535 */ + g *= 257; /* 0..65535 */ + b *= 257; /* 0..65535 */ + if(rs < 0) r <<= -rs; + else r >>= rs; + if(gs < 0) g <<= -gs; + else g >>= gs; + if(bs < 0) b <<= -bs; + else b >>= bs; + r &= theVisual->red_mask; + g &= theVisual->green_mask; + b &= theVisual->blue_mask; - XSetFunction(mywin.d,mywin.gcgr,GXclear); - XFillRectangle(mywin.d, mywin.gscreen, mywin.gcgr, 0, 0, SIZEX, SIZEY); - XSetFunction(mywin.d, mywin.gcgr, GXand); - for(i=0; ired=((val>>8)&0xf)*0x1111; - set->green=((val>>4)&0xf)*0x1111; - set->blue=(0xf&val)*0x1111; + if(truecolor) { + int i; + for(i = 0; i < NUMPXL; i++) + truecolor_palette[i] = trueColorPixel(mywin.curcoltab[i].red / 257, + mywin.curcoltab[i].green / 257, + mywin.curcoltab[i].blue / 257); + Redraw(0, 0, SIZEX, SIZEY); + } + else + XStoreColors(mywin.d, mywin.cmap, mywin.curcoltab, NUMPXL); } static int InitColor(Colormap cmap, Bool allocate) @@ -240,18 +266,24 @@ if(allocate) { for(i=0;icmsg(CMSG_INFO, VERB_VERBOSE, "Initialize WRD window"); + /*Initialize Charactor buffer and attr */ mywin.curline=0; mywin.curcol=0; mywin.ton=1; + mywin.gon=1; mywin.gmode=-1; mywin.curattr=0;/*Attribute Ground state*/ mywin.scrnbuf=(Linbuf **)calloc(LINES,sizeof(Linbuf *)); @@ -312,18 +348,15 @@ XSynchronize(mywin.d, True); } + theScreen = DefaultScreen(mywin.d); + theDepth = DefaultDepth(mywin.d, theScreen); + theVisual = DefaultVisual(mywin.d, theScreen); + /* check truecolor */ - visualList = XGetVisualInfo(mywin.d, 0, &visualTmpl, &nvisuals); - truecolor = False; - for (i=0;iclass == TrueColor || theVisual->class == StaticColor) + truecolor=True; + else + truecolor=False; if((mywin.f8=XLoadQueryFont(mywin.d,JISX0201))==NULL){ ctl->cmsg(CMSG_ERROR,VERB_NORMAL,"%s: Can't load font",JISX0201); @@ -340,12 +373,28 @@ init_flag = -1; return -1; } + mywin.w=XCreateSimpleWindow(mywin.d,DefaultRootWindow(mywin.d) ,0,0,SIZEX,SIZEY ,10, - BlackPixel(mywin.d,DefaultScreen(mywin.d)), - WhitePixel(mywin.d,DefaultScreen(mywin.d))); - mywin.cmap=DefaultColormap(mywin.d,DefaultScreen(mywin.d)); + BlackPixel(mywin.d, theScreen), + WhitePixel(mywin.d, theScreen)); + mywin.cmap=DefaultColormap(mywin.d, theScreen); + + if(truecolor) { +#if XSHM_SUPPORT + shm_format = XShmPixmapFormat(mywin.d); + if(shm_format == ZPixmap) + shm_screen = create_shm_image_pixmap(SIZEX, SIZEY); + else + shm_screen = NULL; /* No-support other format */ + if(!shm_screen) + ctl->cmsg(CMSG_WARNING, VERB_VERBOSE, "X SHM Extention is off"); +#else + shm_screen = NULL; +#endif + } + /*This block initialize Colormap*/ if(InitColor(mywin.cmap, True)!=0){ mywin.cmap=XCopyColormapAndFree(mywin.d,mywin.cmap); @@ -373,19 +422,13 @@ XFree(sh); /* Alloc background pixmap(Graphic plane)*/ - { - int depth; - depth=DefaultDepth(mywin.d,DefaultScreen(mywin.d)); - for(i=0;ibits_per_pixel/8; + XDestroyImage(im); + } + image_buffer=(char *)safe_malloc(SIZEX*SIZEY*bytes_per_image_pixel); init_flag = 1; return 0; } @@ -448,24 +498,11 @@ return 0; } -static void Redraw(int x,int y,int width,int height,int flag) +static int RedrawText(Drawable drawable, int x,int y,int width,int height) { int i,yfrom,yto,xfrom,xto; int drawflag; - if(!mywin.redrawflag) - return; - if(mywin.ton==TON_NOSHOW){ - XClearArea(mywin.d,mywin.w,x,y,width,height,False); - return; - } - if(!flag){ - XCopyArea(mywin.d,mywin.offscr,mywin.w,mywin.gc,x,y,width,height,x,y); - return; - } - XCopyArea(mywin.d,mywin.appearscreen,mywin.offscr,mywin.gc, - x,y,width,height,x,y); - xfrom=x/CSIZEX; xfrom=max(xfrom,0); xto=(x+width-1)/CSIZEX; @@ -531,7 +568,7 @@ XSetForeground(mywin.d,mywin.gc, mywin.txtcolor[tcol].pixel); } - (*DrawStringFunc)(mywin.d,mywin.offscr,mywin.gc, + (*DrawStringFunc)(mywin.d,drawable,mywin.gc, s_x-lbearing,i*CSIZEY+ascent,line,pos); drawflag=1; if((prevattr&CATTR_COLORED)||(prevattr&CATTR_BGCOLORED)) @@ -546,116 +583,118 @@ } } } - if(drawflag) - XCopyArea(mywin.d,mywin.offscr,mywin.w,mywin.gc,x,y,width,height,x,y); - else - XClearArea(mywin.d,mywin.w,x,y,width,height,False); + return drawflag; } - -static void RedrawPallet(int pallet) +/* Copy disp_screen to offscr */ +static void TransferArea(int sx, int sy, int width, int height) { - int i,yfrom,yto,xfrom,xto; - int drawflag; - - if(!mywin.redrawflag) - return; - if(mywin.ton==TON_NOSHOW){ - XClearArea(mywin.d,mywin.w,0,0,SIZEX,SIZEY,False); - return; - } - - /*gscreen2palscreen(pallet);*/ - - xfrom=0/CSIZEX; - xto=(0+SIZEX-1)/CSIZEX; - xto=(xto SIZEX) + width = SIZEX - sx; + if(sy + height > SIZEY) + height = SIZEY - sy; - jfrom=xfrom; - jto=xto; +#if XSHM_SUPPORT + if(shm_screen) + { + im = shm_screen->im; + XCopyArea(mywin.d, mywin.disp_screen, shm_screen->pm, mywin.gc, + sx, sy, width, height, 0, 0); + XSync(mywin.d, 0); /* Wait until ready */ + x0 = 0; + y0 = 0; + } + else +#endif /* XSHM_SUPPORT */ + { + im = XGetImage(mywin.d, mywin.disp_screen, + sx, sy, width, height, AllPlanes, ZPixmap); + x0 = 0; + y0 = 0; + } - /* Check multibyte boudary */ - if(jfrom > 0 && (mywin.scrnbuf[i][jfrom-1].attr&CATTR_LPART)) - jfrom--; - if(jto < COLS-1 && (mywin.scrnbuf[i][jto].attr&CATTR_LPART)) - jto++; + units_per_line = im->bytes_per_line / (im->bits_per_pixel / 8); - pos=0; - prevattr=CATTR_INVAL; - s_x=e_x=jfrom*CSIZEX; - for(j=jfrom;j<=jto+1;j++){ - if(j==jto+1 || mywin.scrnbuf[i][j].c==0) { - curattr=CATTR_INVAL; - }else - curattr=mywin.scrnbuf[i][j].attr; - if((prevattr&~CATTR_LPART)!=(curattr&~CATTR_LPART)){ - XFontStruct *f=NULL; - int lbearing,ascent; - int (*DrawStringFunc)(); - DrawStringFunc=XDrawString; - line[pos]=0; - if(prevattr<0){ - DrawStringFunc=NULL; - }else if(prevattr&CATTR_16FONT){ - f=mywin.f16; - DrawStringFunc=XDrawString16; - pos/=2; - }else - f=mywin.f8; - if(DrawStringFunc!=NULL){ - XSetFont(mywin.d,mywin.gc,f->fid); - lbearing=f->min_bounds.lbearing; - ascent=f->max_bounds.ascent; - if(prevattr&CATTR_COLORED){ - int tcol; - tcol=(prevattr&CATTR_TXTCOL_MASK)>>CATTR_TXTCOL_MASK_SHIFT; - XSetForeground(mywin.d,mywin.gc, - mywin.gcolor[pallet][tcol].pixel); - /*pal2pixel(pallet,tcol));*/ - }else if(prevattr&CATTR_BGCOLORED){ - int tcol; - tcol=(prevattr&CATTR_TXTCOL_MASK)>>CATTR_TXTCOL_MASK_SHIFT; - DrawStringFunc=(DrawStringFunc==XDrawString)?DrawReverseString:DrawReverseString16; - XSetForeground(mywin.d,mywin.gc, - mywin.gcolor[pallet][tcol].pixel); - /*pal2pixel(pallet,tcol));*/ - } - (*DrawStringFunc)(mywin.d,mywin.offscr,mywin.gc, - s_x-lbearing,i*CSIZEY+ascent,line,pos); - drawflag=1; - if((prevattr&CATTR_COLORED)||(prevattr&CATTR_BGCOLORED)) - XSetForeground(mywin.d,mywin.gc, - mywin.gcolor[pallet][COLOR_DEFAULT].pixel); - /*pal2pixel(pallet,COLOR_DEFAULT));*/ + /* Optimize 8, 16, 32 bit depth image */ + switch(im->bits_per_pixel) + { + case 8: + for(y = 0; y < height; y++) + for(x = 0; x < width; x++) + { + i = (y0 + y) * units_per_line + x0 + x; + c = im->data[i]; + im->data[i] = truecolor_palette[c]; + } + break; + case 16: + for(y = 0; y < height; y++) + for(x = 0; x < width; x++) + { + i = (y0 + y) * units_per_line + x0 + x; + c = ((uint16 *)im->data)[i]; + ((uint16 *)im->data)[i] = truecolor_palette[c]; + } + break; + case 32: + for(y = 0; y < height; y++) + for(x = 0; x < width; x++) + { + i = (y0 + y) * units_per_line + x0 + x; + c = ((uint32 *)im->data)[i]; + ((uint32 *)im->data)[i] = truecolor_palette[c]; + } + break; + default: + for(y = 0; y < height; y++) + for(x = 0; x < width; x++) + { + c = XGetPixel(im, x0 + x, y0 + y); + XPutPixel(im, x0 + x, y0 + y, truecolor_palette[c]); + } + break; + } - } - prevattr=curattr; - s_x=e_x; - pos=0; +#if XSHM_SUPPORT + if(shm_screen) + XCopyArea(mywin.d, shm_screen->pm, mywin.offscr, mywin.gc, + x0, y0, width, height, sx, sy); + else +#endif + { + XPutImage(mywin.d, mywin.offscr, mywin.gc, im, + x0, y0, sx, sy, width, height); + XDestroyImage(im); } - line[pos++]=mywin.scrnbuf[i][j].c; - e_x+=CSIZEX; - } } +} + +static void Redraw(int x, int y, int width, int height) +{ + if(!mywin.redrawflag) + return; + + if(mywin.gon) + TransferArea(x, y, width, height); + else { + XSetForeground(mywin.d, mywin.gc, + BlackPixel(mywin.d,DefaultScreen(mywin.d))); + XFillRectangle(mywin.d, mywin.offscr, mywin.gc, x, y, width, height); } - if(drawflag) - XCopyArea(mywin.d,mywin.offscr,mywin.w,mywin.gc,0,0,SIZEX,SIZEY,0,0); - else - XClearArea(mywin.d,mywin.w,0,0,SIZEX,SIZEY,False); - palscreen2gscreen(pallet); - XSetWindowBackgroundPixmap(mywin.d, mywin.w, mywin.gscreen); + if(mywin.ton) + RedrawText(mywin.offscr, x, y, width, height); + XClearArea(mywin.d, mywin.w, x, y, width, height, False); } @@ -739,7 +778,7 @@ } } else if(xfrom!=-1) - Redraw(xfrom,yfrom,xto-xfrom,yto-yfrom,True); + Redraw(xfrom,yfrom,xto-xfrom,yto-yfrom); } /************************************************************ * Graphic Command Functions @@ -750,7 +789,7 @@ void x_GMode(int mode) { int i; - unsigned long mask=0; + unsigned long mask; if(mode == -1) { @@ -763,6 +802,7 @@ mode&=15; mywin.gmode = mode; mode = (mode&8)|wrd_plane_remap[mode&7]; + mask = mywin.basepix; for(i=0;i>1; @@ -786,14 +826,15 @@ XCopyArea(mywin.d,mywin.screens[endp],mywin.screens[srcp],mywin.gcgr ,xdist,ydist,w,h,xorig,yorig); XSetFunction(mywin.d,mywin.gcgr,GXcopy); - if(mywin.screens[srcp]==mywin.appearscreen) - Redraw(xorig,yorig,w,h,True); + if(mywin.screens[srcp]==mywin.disp_screen) + Redraw(xorig,yorig,w,h); } else XCopyArea(mywin.d,mywin.screens[srcp],mywin.screens[endp],mywin.gcgr ,xorig,yorig,w,h,xdist,ydist); - if(mywin.screens[endp]==mywin.appearscreen) - Redraw(xdist,ydist,w,h,True); + if(mywin.screens[endp]==mywin.disp_screen) { + Redraw(xdist,ydist,w,h); + } } } void x_VSget(int *params,int nparam) @@ -852,8 +893,8 @@ } XCopyArea(mywin.d,srcpage,distpage,mywin.gc ,sx1,sy1,w,h,tx,ty); - if(distpage==mywin.appearscreen) - Redraw(tx,ty,w,h,True); + if(distpage==mywin.disp_screen) + Redraw(tx,ty,w,h); } void x_XCopy(int sx1, @@ -893,10 +934,10 @@ case 1: /* copy except pallet No.0 */ simg = XGetImage(mywin.d, mywin.screens[ss], - sx1, sy1, w, h, gscreen_plane_mask, ZPixmap); + sx1, sy1, w, h, mywin.gscreen_plane_mask, ZPixmap); if(!simg) break; timg = XGetImage(mywin.d, mywin.screens[ts], - tx, ty, w, h, gscreen_plane_mask, ZPixmap); + tx, ty, w, h, mywin.gscreen_plane_mask, ZPixmap); if(!timg) break; for(y = 0; y < h; y++) for(x = 0; x < w; x++) @@ -907,8 +948,8 @@ } XPutImage(mywin.d, mywin.screens[ts], mywin.gcgr, timg, 0, 0, tx, ty, w, h); - if(mywin.screens[ts] == mywin.appearscreen) - Redraw(tx, ty, w, h, True); + if(mywin.screens[ts] == mywin.disp_screen) + Redraw(tx, ty, w, h); break; case 2: /* xor */ @@ -931,7 +972,7 @@ case 5: /* reverse x */ simg = XGetImage(mywin.d, mywin.screens[ss], - sx1, sy1, w, h, gscreen_plane_mask, ZPixmap); + sx1, sy1, w, h, mywin.gscreen_plane_mask, ZPixmap); if(!simg) break; for(y = 0; y < h; y++) @@ -947,13 +988,13 @@ } XPutImage(mywin.d, mywin.screens[ts], mywin.gcgr, simg, 0, 0, tx, ty, w, h); - if(mywin.screens[ts] == mywin.appearscreen) - Redraw(tx, ty, w, h, True); + if(mywin.screens[ts] == mywin.disp_screen) + Redraw(tx, ty, w, h); break; case 6: /* reverse y */ simg = XGetImage(mywin.d, mywin.screens[ss], - sx1, sy1, w, h, gscreen_plane_mask, ZPixmap); + sx1, sy1, w, h, mywin.gscreen_plane_mask, ZPixmap); if(!simg) break; for(y = 0; y < h/2; y++) @@ -969,13 +1010,13 @@ } XPutImage(mywin.d, mywin.screens[ts], mywin.gcgr, simg, 0, 0, tx, ty, w, h); - if(mywin.screens[ts] == mywin.appearscreen) - Redraw(tx, ty, w, h, True); + if(mywin.screens[ts] == mywin.disp_screen) + Redraw(tx, ty, w, h); break; case 7: /* reverse x-y */ simg = XGetImage(mywin.d, mywin.screens[ss], - sx1, sy1, w, h, gscreen_plane_mask, ZPixmap); + sx1, sy1, w, h, mywin.gscreen_plane_mask, ZPixmap); if(!simg) break; for(i = 0; i < w*h/2; i++) @@ -988,18 +1029,18 @@ } XPutImage(mywin.d, mywin.screens[ts], mywin.gcgr, simg, 0, 0, tx, ty, w, h); - if(mywin.screens[ts] == mywin.appearscreen) - Redraw(tx, ty, w, h, True); + if(mywin.screens[ts] == mywin.disp_screen) + Redraw(tx, ty, w, h); break; case 8: /* copy except pallet No.0 (type2) */ if(nopts < 2) break; simg = XGetImage(mywin.d, mywin.screens[ss], - sx1, sy1, w, h, gscreen_plane_mask, ZPixmap); + sx1, sy1, w, h, mywin.gscreen_plane_mask, ZPixmap); if(!simg) break; timg = XGetImage(mywin.d, mywin.screens[ts], - opts[0], opts[1], w, h, gscreen_plane_mask, ZPixmap); + opts[0], opts[1], w, h, mywin.gscreen_plane_mask, ZPixmap); if(!timg) break; for(y = 0; y < h; y++) for(x = 0; x < w; x++) @@ -1010,8 +1051,8 @@ } XPutImage(mywin.d, mywin.screens[ts], mywin.gcgr, timg, 0, 0, tx, ty, w, h); - if(mywin.screens[ts] == mywin.appearscreen) - Redraw(tx, ty, w, h, True); + if(mywin.screens[ts] == mywin.disp_screen) + Redraw(tx, ty, w, h); break; case 9: { /* Mask copy */ @@ -1020,10 +1061,10 @@ break; opt5 = opts[4]; simg = XGetImage(mywin.d, mywin.screens[ss], - sx1, sy1, w, h, gscreen_plane_mask, ZPixmap); + sx1, sy1, w, h, mywin.gscreen_plane_mask, ZPixmap); if(!simg) break; timg = XGetImage(mywin.d, mywin.screens[ts], - tx, ty, w, h, gscreen_plane_mask, ZPixmap); + tx, ty, w, h, mywin.gscreen_plane_mask, ZPixmap); if(!timg) break; for(y = 0; y < h; y++) { @@ -1043,8 +1084,8 @@ } XPutImage(mywin.d, mywin.screens[ts], mywin.gcgr, timg, 0, 0, tx, ty, w, h); - if(mywin.screens[ts] == mywin.appearscreen) - Redraw(tx, ty, w, h, True); + if(mywin.screens[ts] == mywin.disp_screen) + Redraw(tx, ty, w, h); } break; @@ -1059,10 +1100,10 @@ if(cp + sk == 0) break; simg = XGetImage(mywin.d, mywin.screens[ss], - sx1, sy1, w, h, gscreen_plane_mask, ZPixmap); + sx1, sy1, w, h, mywin.gscreen_plane_mask, ZPixmap); if(!simg) break; timg = XGetImage(mywin.d, mywin.screens[ts], - tx, ty, w, h, gscreen_plane_mask, ZPixmap); + tx, ty, w, h, mywin.gscreen_plane_mask, ZPixmap); if(!timg) break; y = 0; while(y < h) @@ -1075,8 +1116,8 @@ y += sk; } } - if(mywin.screens[ts] == mywin.appearscreen) - Redraw(tx, ty, w, h, True); + if(mywin.screens[ts] == mywin.disp_screen) + Redraw(tx, ty, w, h); break; case 11: { @@ -1113,12 +1154,12 @@ h - (ety - SIZEY), 0, 0); } - if(mywin.screens[ts] == mywin.appearscreen) + if(mywin.screens[ts] == mywin.disp_screen) { if(etx < SIZEX && ety < SIZEY) - Redraw(tx, ty, w, h, True); + Redraw(tx, ty, w, h); else - Redraw(0, 0, SIZEX, SIZEY, True); + Redraw(0, 0, SIZEX, SIZEY); } } break; @@ -1126,14 +1167,14 @@ case 12: { unsigned long psm, ptm; int plane_map[4] = {2, 0, 1, 3}; - psm = mywin.pmask[plane_map[opts[0] & 3]]; - ptm = mywin.pmask[plane_map[opts[1] & 3]]; + psm = mywin.pmask[plane_map[opts[0] & 3]] | mywin.basepix; + ptm = mywin.pmask[plane_map[opts[1] & 3]] | mywin.basepix; simg = XGetImage(mywin.d, mywin.screens[ss], - sx1, sy1, w, h, gscreen_plane_mask, ZPixmap); + sx1, sy1, w, h, mywin.gscreen_plane_mask, ZPixmap); if(!simg) break; timg = XGetImage(mywin.d, mywin.screens[ts], - tx, ty, w, h, gscreen_plane_mask, ZPixmap); + tx, ty, w, h, mywin.gscreen_plane_mask, ZPixmap); if(!timg) break; for(y = 0; y < h; y++) for(x = 0; x < w; x++) @@ -1147,8 +1188,8 @@ p2 &= ~ptm; XPutPixel(timg, x, y, p2); } - if(mywin.screens[ts] == mywin.appearscreen) - Redraw(tx, ty, w, h, True); + if(mywin.screens[ts] == mywin.disp_screen) + Redraw(tx, ty, w, h); } break; } @@ -1177,10 +1218,10 @@ memset(image->data, 0, SIZEX * SIZEY); if(!pho_load_pixel(image,mywin.curcoltab,filename)) return; - XPutImage(mywin.d,mywin.gscreen,mywin.gc + XPutImage(mywin.d,mywin.active_screen,mywin.gc ,image,0,0,0,0,SIZEX,SIZEY); - if(mywin.gscreen==mywin.appearscreen) - Redraw(0,0,SIZEX,SIZEY,True); + if(mywin.active_screen==mywin.disp_screen) + Redraw(0,0,SIZEX,SIZEY); } void x_Mag(magdata *mag,int32 x,int32 y,int32 s,int32 p) @@ -1200,16 +1241,16 @@ mag->pal[0]=17; x_Pal(mag->pal,16); - if(mywin.gscreen==mywin.screens[0]){ /* Foreground screen */ + if(mywin.active_screen==mywin.screens[0]){ /* Foreground screen */ mag->pal[0]=18; - if(!truecolor) x_Pal(mag->pal,16); + x_Pal(mag->pal,16); } else { /* Background screen */ mag->pal[0]=19; - if(!truecolor) x_Pal(mag->pal,16); + x_Pal(mag->pal,16); } if((p&1)==0){ mag->pal[0]=0; - if(!truecolor) x_Pal(mag->pal,16); + x_Pal(mag->pal,16); } if(p==2) return; @@ -1220,10 +1261,10 @@ image->data=image_buffer; memset(image->data, 0, pixsizex*pixsizey); mag_load_pixel(image,mywin.curcoltab,mag); - XPutImage(mywin.d,mywin.gscreen,mywin.gc + XPutImage(mywin.d,mywin.active_screen,mywin.gc ,image,0,0,x,y,pixsizex,pixsizey); - if(mywin.gscreen==mywin.appearscreen) - Redraw(x,y,pixsizex,pixsizey,True); + if(mywin.active_screen==mywin.disp_screen) + Redraw(x,y,pixsizex,pixsizey); MyDestroyImage(image); } void x_Gcls(int mode) @@ -1235,26 +1276,31 @@ mode=15; x_GMode(mode); XSetFunction(mywin.d,mywin.gcgr,GXclear); - if(truecolor) - XFillRectangle(mywin.d,mywin.palscreen,mywin.gcgr,0,0,SIZEX,SIZEY); - else - XFillRectangle(mywin.d,mywin.gscreen,mywin.gcgr,0,0,SIZEX,SIZEY); + XFillRectangle(mywin.d,mywin.active_screen,mywin.gcgr,0,0,SIZEX,SIZEY); XSetFunction(mywin.d,mywin.gcgr,GXcopy); x_GMode(gmode_save); - Redraw(0,0,SIZEX,SIZEY,True); + Redraw(0,0,SIZEX,SIZEY); } + void x_Ton(int param) { mywin.ton=param; - Redraw(0,0,SIZEX,SIZEY,True); + Redraw(0,0,SIZEX,SIZEY); } + +void x_Gon(int param) +{ + mywin.gon=param; + Redraw(0,0,SIZEX,SIZEY); +} + void x_RedrawControl(int flag) { mywin.redrawflag = flag; if(flag) { - Redraw(0,0,SIZEX,SIZEY,True); - if(!truecolor) XStoreColors(mywin.d,mywin.cmap,mywin.curcoltab,NUMPXL); + Redraw(0,0,SIZEX,SIZEY); + store_palette(); } XFlush(mywin.d); } @@ -1269,10 +1315,7 @@ w = max(params[0], params[2]) - x + 1; h = max(params[1], params[3]) - y + 1; - if (truecolor) - screen = mywin.palscreen; - else - screen = mywin.gscreen; + screen = mywin.active_screen; switch(params[5]) { @@ -1305,8 +1348,8 @@ break; } - if(mywin.gscreen==mywin.appearscreen) - Redraw(x,y,w,h,True); + if(mywin.active_screen==mywin.disp_screen) + Redraw(x,y,w,h); } void x_GCircle(int *params,int nparam) { @@ -1341,11 +1384,11 @@ ycorner=params[1]-params[2];/*y_center-radius*/ width=height=params[2]*2;/*radius*2*/ angle=360*64; - (*Linefunc)(mywin.d,mywin.gscreen,mywin.gcgr,xcorner,ycorner, + (*Linefunc)(mywin.d,mywin.active_screen,mywin.gcgr,xcorner,ycorner, width+pad,height+pad, 0,angle); - if(mywin.gscreen==mywin.appearscreen) - Redraw(xcorner,ycorner,width,height,True); + if(mywin.active_screen==mywin.disp_screen) + Redraw(xcorner,ycorner,width,height); } } @@ -1366,17 +1409,11 @@ int i; for(i=0;ipm, mywin.gcgr, + 0, 0, SIZEX, SIZEY); } /*Graphic Definition*/ @@ -1916,20 +1960,8 @@ while(QLength(mywin.d)>0){ XNextEvent(mywin.d,&e); switch(e.type){ - case Expose: - if(rdx1 == -1) { - rdx1 = e.xexpose.x; - rdy1 = e.xexpose.y; - rdx2 = e.xexpose.x + e.xexpose.width; - rdy2 = e.xexpose.y + e.xexpose.height; - } else { - rdx1 = min(rdx1, e.xexpose.x); - rdy1 = min(rdy1, e.xexpose.y); - rdx2 = max(rdx2, e.xexpose.x + e.xexpose.width); - rdy2 = max(rdy2, e.xexpose.y + e.xexpose.height); - } case ButtonPress: - Redraw(0,0,SIZEX,SIZEY,True); + Redraw(0,0,SIZEX,SIZEY); rdx1=0; rdy1=0; rdx2=SIZEX; @@ -1943,7 +1975,7 @@ } if(rdx1 != -1){ - Redraw(rdx1, rdy1, rdx2 - rdx1, rdy2 - rdy1,False); + Redraw(rdx1, rdy1, rdx2 - rdx1, rdy2 - rdy1); XFlush(mywin.d); } } @@ -1951,6 +1983,9 @@ { if(mywin.d!=NULL) { + if(truecolor && shm_screen) + free_image_pixmap(shm_screen); + XCloseDisplay(mywin.d); free(image_buffer); } @@ -1978,3 +2013,153 @@ XSync(mywin.d, False); } } + +static void free_image_pixmap(ImagePixmap *ip) +{ + XFreePixmap(mywin.d, ip->pm); + +#if XSHM_SUPPORT + if(ip->shminfo.shmid != -1) + { + /* To destroy a shard memory XImage, you should call XShmDetach() + * first. + */ + XShmDetach(mywin.d, &ip->shminfo); + + /* Unmap shared memory segment */ + shmdt(ip->shminfo.shmaddr); + + /* Remove a shared memory ID from the system */ + shmctl(ip->shminfo.shmid, IPC_RMID, NULL); + } +#endif /* XSHM_SUPPORT */ + if(ip->im != NULL) + XDestroyImage(ip->im); + free(ip); +} + + +#if XSHM_SUPPORT +static int shm_error; +static int my_err_handler(Display* dpy, XErrorEvent* e) +{ + shm_error = e->error_code; + ctl->cmsg(CMSG_WARNING, VERB_VERBOSE, + "Warning: X WRD Warning: Can't create SHM Pixmap. error-code=%d", + shm_error); + return shm_error; +} + +static ImagePixmap *create_shm_image_pixmap(int width, int height) +{ + XErrorHandler origh; + ImagePixmap *ip; + int shm_depth; + + shm_depth = theDepth; + ip = (ImagePixmap *)safe_malloc(sizeof(ImagePixmap)); + + shm_error = 0; + origh = XSetErrorHandler(my_err_handler); + + /* There is no need to initialize XShmSegmentInfo structure + * before the call to XShmCreateImage. + */ + ip->im = XShmCreateImage(mywin.d, theVisual, theDepth, + ZPixmap, NULL, + &ip->shminfo, width, height); + if(ip->im == NULL) + { + if(shm_error == 0) + shm_error = -1; + goto done; + } + + /* allocate n-depth Z image data structure */ + ip->im->data = (char *)safe_malloc(ip->im->bytes_per_line * + ip->im->height); + + /* The next step is to create the shared memory segment. + * The return value of shmat() should be stored both + * the XImage structure and the shminfo structure. + */ + ip->shminfo.shmid = shmget(IPC_PRIVATE, + ip->im->bytes_per_line * ip->im->height, + IPC_CREAT | 0777); + + if(ip->shminfo.shmid == -1) + { + ctl->cmsg(CMSG_WARNING, VERB_VERBOSE, + "X Sherry Warning: Can't create SHM Pixmap.\n" + "shmget: %s", strerror(errno)); + XDestroyImage(ip->im); + ip->im = NULL; + shm_error = -1; + goto done; + } + ip->shminfo.shmaddr = ip->im->data = + (char *)shmat(ip->shminfo.shmid, NULL, 0); + if(ip->shminfo.shmaddr == (void *)-1) + { + ctl->cmsg(CMSG_WARNING, VERB_VERBOSE, + "X Sherry Warning: Can't create SHM Pixmap.\n" + "shmget: %s", strerror(errno)); + shmctl(ip->shminfo.shmid, IPC_RMID, NULL); + XDestroyImage(ip->im); + ip->im = NULL; + shm_error = -1; + goto done; + } + + /* If readOnly is True, XShmGetImage calls will fail. */ + ip->shminfo.readOnly = False; + + + /* Tell the server to attach to your shared memory segment. */ + if(XShmAttach(mywin.d, &ip->shminfo) == 0) + { + if(shm_error == 0) + { + ctl->cmsg(CMSG_WARNING, VERB_VERBOSE, + "X Sherry Warning: Can't create SHM Pixmap.\n" + "Can't attach to the shared memory segment."); + shm_error = -1; + } + shmdt(ip->shminfo.shmaddr); + shmctl(ip->shminfo.shmid, IPC_RMID, NULL); + XDestroyImage(ip->im); + ip->im = NULL; + goto done; + } + + XSync(mywin.d, False); /* Wait until ready. */ + + ip->pm = XShmCreatePixmap(mywin.d, mywin.w, ip->im->data, + &ip->shminfo, width, height, shm_depth); + if(ip->pm == None) + { + if(shm_error == 0) + { + ctl->cmsg(CMSG_WARNING, VERB_VERBOSE, + "X Sherry Warning: Can't create SHM Pixmap.\n" + "XShmCreatePixmap() is failed"); + shm_error = -1; + } + shmdt(ip->shminfo.shmaddr); + shmctl(ip->shminfo.shmid, IPC_RMID, NULL); + XDestroyImage(ip->im); + ip->im = NULL; + goto done; + } + + done: + XSetErrorHandler(origh); + + if(ip->im == NULL) + { + free(ip); + return NULL; + } + return ip; +} +#endif diff -ruN TiMidity++-2.4.1/interface/x_wrdwindow.h TiMidity++-2.5.0/interface/x_wrdwindow.h --- TiMidity++-2.4.1/interface/x_wrdwindow.h Mon Feb 22 08:12:36 1999 +++ TiMidity++-2.5.0/interface/x_wrdwindow.h Wed Aug 18 02:08:56 1999 @@ -43,6 +43,7 @@ extern void x_GMove(int,int,int,int,int,int,int,int,int); extern void x_GMode(int mode); extern void x_Ton(int param); +extern void x_Gon(int param); extern void x_Startup(int version); extern void x_VSget(int *,int); extern void x_VRel(void); diff -ruN TiMidity++-2.4.1/interface/xaw.h TiMidity++-2.5.0/interface/xaw.h --- TiMidity++-2.4.1/interface/xaw.h Tue Mar 16 12:27:08 1999 +++ TiMidity++-2.5.0/interface/xaw.h Tue Aug 24 20:04:55 1999 @@ -48,6 +48,7 @@ #define MAX_XAW_MIDI_CHANNELS 16 #define APP_CLASS "TiMidity" +#define APP_NAME "timidity" #ifndef PATH_MAX #define PATH_MAX 512 diff -ruN TiMidity++-2.4.1/interface/xaw_i.c TiMidity++-2.5.0/interface/xaw_i.c --- TiMidity++-2.4.1/interface/xaw_i.c Sat Jul 17 18:22:44 1999 +++ TiMidity++-2.5.0/interface/xaw_i.c Tue Aug 24 20:23:53 1999 @@ -2898,7 +2898,7 @@ #endif "*cwd_label.font: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*", "*time_label*cwd_info.font: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*", - "*time_label.fontSet: -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-*", + "*time_label.font: -adobe-helvetica-bold-r-*-*-14-*-*-*-*-*-*-*", "*BitmapDir: " DEFAULT_PATH "/bitmaps/", #ifdef XAW3D "*volume_bar.translations: #override\\n\ @@ -3051,7 +3051,7 @@ int i, j, k, tmpi; int argc=1; float thumb, l_thumb, l_thumbj; - char *argv="timidity", *filetext; + char *argv=APP_NAME, *filetext; #ifdef I18N #define XtNfontDEF XtNfontSet XFontSet textfont; diff -ruN TiMidity++-2.4.1/libarc/Makefile.in TiMidity++-2.5.0/libarc/Makefile.in --- TiMidity++-2.4.1/libarc/Makefile.in Wed Aug 11 22:06:41 1999 +++ TiMidity++-2.5.0/libarc/Makefile.in Thu Aug 26 13:00:35 1999 @@ -89,7 +89,6 @@ ESD_CFLAGS = @ESD_CFLAGS@ ESD_CONFIG = @ESD_CONFIG@ ESD_LIBS = @ESD_LIBS@ -EXEEXT = @EXEEXT@ EXTRALIBS = @EXTRALIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_CONFIG = @GTK_CONFIG@ diff -ruN TiMidity++-2.4.1/libarc/arc.c TiMidity++-2.5.0/libarc/arc.c --- TiMidity++-2.4.1/libarc/arc.c Wed Aug 11 22:06:13 1999 +++ TiMidity++-2.5.0/libarc/arc.c Wed Aug 18 02:08:56 1999 @@ -470,7 +470,7 @@ if(strncmp(base, "dir:", 4) == 0) base += 4; len1 = strlen(base); - if(base[len1 - 1] == PATH_SEP) + if(IS_PATH_SEP(base[len1 - 1])) len1--; while(url_gets(url, buff, sizeof(buff))) { diff -ruN TiMidity++-2.4.1/libarc/arc.h TiMidity++-2.5.0/libarc/arc.h --- TiMidity++-2.4.1/libarc/arc.h Wed Aug 11 18:52:05 1999 +++ TiMidity++-2.5.0/libarc/arc.h Wed Aug 18 02:08:56 1999 @@ -6,7 +6,7 @@ #include "url.h" #include "mblock.h" -#define ARC_LIB_VERSION "2.0.0" +#define ARC_LIB_VERSION "2.0.1" #define ARC_DEFLATE_LEVEL 6 /* 1:Compress faster .. 9:Compress better */ #define ARC_ENTRY_HASHSIZE 63 diff -ruN TiMidity++-2.4.1/libarc/url.c TiMidity++-2.5.0/libarc/url.c --- TiMidity++-2.4.1/libarc/url.c Sun Aug 8 01:50:34 1999 +++ TiMidity++-2.5.0/libarc/url.c Wed Aug 18 02:08:56 1999 @@ -399,7 +399,7 @@ if(fname[0] != '~') return fname; - if(fname[1] == PATH_SEP) /* ~/... */ + if(IS_PATH_SEP(fname[1])) /* ~/... */ { fname++; if((dir = getenv("HOME")) == NULL) @@ -412,7 +412,7 @@ int i; fname++; - for(i = 0; i < sizeof(path) && fname[i] && fname[i] != PATH_SEP; i++) + for(i = 0; i < sizeof(path) && fname[i] && !IS_PATH_SEP(fname[i]); i++) path[i] = fname[i]; path[i] = '\0'; if((pw = getpwnam(path)) == NULL) @@ -433,7 +433,7 @@ char *dir, *p; int dirlen; - if(fname[0] != PATH_SEP) + if(!IS_PATH_SEP(fname[0])) return fname; if((dir = getenv("HOME")) == NULL) @@ -443,7 +443,7 @@ if(dirlen == 0 || dirlen >= sizeof(path) - 2) return fname; memcpy(path, dir, dirlen); - if(path[dirlen - 1] != PATH_SEP) + if(!IS_PATH_SEP(path[dirlen - 1])) path[dirlen++] = PATH_SEP; #ifndef __W32__ diff -ruN TiMidity++-2.4.1/libarc/url.h TiMidity++-2.5.0/libarc/url.h --- TiMidity++-2.4.1/libarc/url.h Mon Aug 9 04:08:37 1999 +++ TiMidity++-2.5.0/libarc/url.h Wed Aug 25 09:50:10 1999 @@ -6,7 +6,7 @@ * http://www.goice.co.jp/member/mo/release/index.html#liburl */ -#define URL_LIB_VERSION "1.9.0" +#define URL_LIB_VERSION "1.9.3" /* Define if you want to enable pipe command scheme ("command|") */ #define PIPE_SCHEME_ENABLE diff -ruN TiMidity++-2.4.1/libarc/url_dir.c TiMidity++-2.5.0/libarc/url_dir.c --- TiMidity++-2.4.1/libarc/url_dir.c Sun Mar 28 18:16:10 1999 +++ TiMidity++-2.5.0/libarc/url_dir.c Wed Aug 25 10:52:36 1999 @@ -11,6 +11,8 @@ #include "timidity.h" #include "url.h" +extern char *safe_strdup(char *); + #ifdef __W32READDIR__ #include "readdir.h" # define NAMLEN(dirent) strlen((dirent)->d_name) @@ -49,16 +51,30 @@ #define S_ISDIR(mode) (((mode)&0xF000) == 0x4000) #endif /* S_ISDIR */ +#ifdef unix +#define INODE_AVAILABLE +#endif /* unix */ + struct dir_cache_t { char **fnames; +#ifdef INODE_AVAILABLE dev_t dev; ino_t ino; +#else + char *dirname; +#endif time_t dir_mtime; struct dir_cache_t *next; }; static struct dir_cache_t *dir_cache = NULL; +#ifdef INODE_AVAILABLE +#define REMOVE_CACHE_ENT(p, isalloced) if(isalloced) free(p); else (p)->ino = 0 +#else +#define REMOVE_CACHE_ENT(p, isalloced) free((p)->dirname); if(isalloced) free(p); else p->dirname = NULL +#endif /* INODE_AVAILABLE */ + static struct dir_cache_t *scan_cached_files(struct dir_cache_t *p, struct stat *s, char *dirname) @@ -78,17 +94,18 @@ allocated = 0; /* save directory information */ +#ifdef INODE_AVAILABLE p->ino = s->st_ino; p->dev = s->st_dev; +#else + p->dirname = safe_strdup(dirname); +#endif /* INODE_AVAILABLE */ p->dir_mtime = s->st_mtime; if((dirp = opendir(dirname)) == NULL) { url_errno = errno; - if(allocated) - free(p); - else - p->ino = 0; /* remove directory entry */ + REMOVE_CACHE_ENT(p, allocated); errno = url_errno; return NULL; } @@ -98,9 +115,10 @@ { int dlen; - /* Skip removed file. */ +#ifdef INODE_AVAILABLE if(d->d_ino == 0) continue; +#endif if((dlen = NAMLEN(d)) == 0) continue; @@ -109,10 +127,7 @@ { url_errno = errno; delete_string_table(&stab); - if(allocated) - free(p); - else - p->ino = 0; /* remove directory entry */ + REMOVE_CACHE_ENT(p, allocated); closedir(dirp); errno = url_errno; return NULL; @@ -126,10 +141,7 @@ { url_errno = errno; delete_string_table(&stab); - if(allocated) - free(p); - else - p->ino = 0; /* remove directory entry */ + REMOVE_CACHE_ENT(p, allocated); errno = url_errno; return NULL; } @@ -152,7 +164,11 @@ q = NULL; for(p = dir_cache; p; p = p->next) { +#ifdef INODE_AVAILABLE if(p->ino == 0) +#else + if(p->dirname == NULL) +#endif /* INODE_AVAILABLE */ { /* Entry is removed. * Save the entry to `q' which is reused for puting in new entry. @@ -162,7 +178,12 @@ continue; } +#ifdef INODE_AVAILABLE if(s.st_dev == p->dev && s.st_ino == p->ino) +#else + if(strcmp(p->dirname, dirname) == 0) +#endif /* INODE_AVAILABLE */ + { /* found */ if(p->dir_mtime == s.st_mtime) @@ -171,6 +192,9 @@ /* Directory entry is updated */ free(p->fnames[0]); free(p->fnames); +#ifndef INODE_AVAILABLE + free(p->dirname); +#endif /* !INODE_AVAILABLE */ return scan_cached_files(p, &s, dirname); } } @@ -217,9 +241,10 @@ static int name_dir_check(char *url_string) { + extern char *pathsep_strrchr(char *); if(strncasecmp(url_string, "dir:", 4) == 0) return 1; - url_string = strrchr(url_string, PATH_SEP); + url_string = pathsep_strrchr(url_string); return url_string != NULL && *(url_string + 1) == '\0'; } @@ -228,21 +253,42 @@ { struct dir_cache_t *d; URL_dir *url; + int dlen; - if(strncasecmp(dname, "dir:", 4) == 0) - dname += 4; - if(*dname == '\0') + if(dname == NULL) dname = "."; else - dname = url_expand_home_dir(dname); + { + if(strncasecmp(dname, "dir:", 4) == 0) + dname += 4; + if(*dname == '\0') + dname = "."; + else + dname = url_expand_home_dir(dname); + } + dname = safe_strdup(dname); + + /* Remove tail of path sep. */ + dlen = strlen(dname); + while(dlen > 0 && IS_PATH_SEP(dname[dlen - 1])) + dlen--; + dname[dlen] = '\0'; + if(dlen == 0) + strcpy(dname, PATH_STRING); /* root */ + d = read_cached_files(dname); if(d == NULL) + { + free(dname); return NULL; + } url = (URL_dir *)alloc_url(sizeof(URL_dir)); if(url == NULL) { url_errno = errno; + free(dname); + errno = url_errno; /* restore errno */ return NULL; } @@ -260,7 +306,7 @@ url->ptr = NULL; url->len = 0; url->total = 0; - url->dirname = strdup(dname); + url->dirname = dname; url->endp = 0; return (URL)url; @@ -270,7 +316,6 @@ { URL_dir *url; DIR *dirp; - char *dirname; int dlen; if(dname == NULL) @@ -284,24 +329,30 @@ else dname = url_expand_home_dir(dname); } + dname = safe_strdup(dname); - if((dirp = opendir(dname)) == NULL) - return NULL; + /* Remove tail of path sep. */ dlen = strlen(dname); - if((dirname = (char *)malloc(dlen + 1)) == NULL) + while(dlen > 0 && IS_PATH_SEP(dname[dlen - 1])) + dlen--; + dname[dlen] = '\0'; + if(dlen == 0) + strcpy(dname, PATH_STRING); /* root */ + + if((dirp = opendir(dname)) == NULL) { url_errno = errno; - closedir(dirp); + free(dname); errno = url_errno; return NULL; } - memcpy(dirname, dname, dlen + 1); url = (URL_dir *)alloc_url(sizeof(URL_dir)); if(url == NULL) { url_errno = errno; closedir(dirp); + free(dname); errno = url_errno; return NULL; } @@ -321,7 +372,7 @@ url->ptr = NULL; url->len = 0; url->total = 0; - url->dirname = strdup(dname); + url->dirname = dname; url->endp = 0; return (URL)url; @@ -400,15 +451,17 @@ urlp->fptr++; urlp->len = strlen(urlp->ptr); #else - do if((urlp->d = readdir(urlp->dirp)) == NULL) { urlp->endp = 1; return NULL; } - while (urlp->d->d_ino == 0 || - NAMLEN(urlp->d) == 0); + while ( +#ifdef INODE_AVAILABLE + urlp->d->d_ino == 0 || +#endif /* INODE_AVAILABLE */ + NAMLEN(urlp->d) == 0); urlp->ptr = urlp->d->d_name; urlp->len = NAMLEN(urlp->d); #endif diff -ruN TiMidity++-2.4.1/libarc/url_file.c TiMidity++-2.5.0/libarc/url_file.c --- TiMidity++-2.4.1/libarc/url_file.c Mon Aug 9 03:23:06 1999 +++ TiMidity++-2.5.0/libarc/url_file.c Wed Aug 18 02:08:56 1999 @@ -71,7 +71,7 @@ { int i; - if(s[0] == PATH_SEP) + if(IS_PATH_SEP(s[0])) return 1; if(strncasecmp(s, "file:", 5) == 0) diff -ruN TiMidity++-2.4.1/timidity/Makefile.am TiMidity++-2.5.0/timidity/Makefile.am --- TiMidity++-2.4.1/timidity/Makefile.am Mon Jul 19 13:11:22 1999 +++ TiMidity++-2.5.0/timidity/Makefile.am Sat Aug 21 02:21:35 1999 @@ -117,6 +117,7 @@ nas_a.c \ sun_a.c \ w32_a.c \ + w32g_a.c \ timpp32g.ini if ENABLE_W32GUI diff -ruN TiMidity++-2.4.1/timidity/Makefile.in TiMidity++-2.5.0/timidity/Makefile.in --- TiMidity++-2.4.1/timidity/Makefile.in Wed Aug 11 22:06:54 1999 +++ TiMidity++-2.5.0/timidity/Makefile.in Thu Aug 26 13:01:00 1999 @@ -89,7 +89,6 @@ ESD_CFLAGS = @ESD_CFLAGS@ ESD_CONFIG = @ESD_CONFIG@ ESD_LIBS = @ESD_LIBS@ -EXEEXT = @EXEEXT@ EXTRALIBS = @EXTRALIBS@ GTK_CFLAGS = @GTK_CFLAGS@ GTK_CONFIG = @GTK_CONFIG@ @@ -119,7 +118,7 @@ timidity_SOURCES = aenc.h aiff_a.c aq.c aq.h au_a.c audio_cnv.c audio_cnv.h common.c common.h controls.c controls.h dlutils.h effect.c filter.c filter.h instrum.c instrum.h list_a.c load_mod.c loadtab.c mid-j.defs mid.defs miditrace.c miditrace.h mix.c mix.h mod.c mod.h output.c output.h playmidi.c playmidi.h raw_a.c rcp.c readmidi.c readmidi.h recache.c recache.h resample.c resample.h reverb.c reverb.h sbkconv.c sffile.c sffile.h sfitem.c sfitem.h sflayer.h smfconv.c smfconv.h sndfont.c tables.c tables.h timidity.c timidity.h version.c wave_a.c wrd.h wrd_read.c wrdt.c -EXTRA_timidity_SOURCES = alsa_a.c audriv.h audriv_a.c audriv_al.c audriv_mme.c audriv_none.c dl_cygwin32.c dl_dld.c dl_dlopen.c dl_hpux.c bsd20_a.c esd_a.c hpux_a.c hpux_d_a.c linux_a.c mac_a.c mac_qt_a.c mac_com.h mac_dlog.c mac_main.c mac_main.h mac_soundspec.c mfnode.c mfnode.h nas_a.c sun_a.c w32_a.c timpp32g.ini +EXTRA_timidity_SOURCES = alsa_a.c audriv.h audriv_a.c audriv_al.c audriv_mme.c audriv_none.c dl_cygwin32.c dl_dld.c dl_dlopen.c dl_hpux.c bsd20_a.c esd_a.c hpux_a.c hpux_d_a.c linux_a.c mac_a.c mac_qt_a.c mac_com.h mac_dlog.c mac_main.c mac_main.h mac_soundspec.c mfnode.c mfnode.h nas_a.c sun_a.c w32_a.c w32g_a.c timpp32g.ini @ENABLE_W32GUI_TRUE@W32GUI_RES = $(top_builddir)/interface/w32g_res.res @@ -132,7 +131,6 @@ mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_HEADER = ../config.h ../interface.h CONFIG_CLEAN_FILES = -bin_PROGRAMS = timidity$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) @@ -219,8 +217,8 @@ maintainer-clean-compile: -timidity$(EXEEXT): $(timidity_OBJECTS) $(timidity_DEPENDENCIES) - @rm -f timidity$(EXEEXT) +timidity: $(timidity_OBJECTS) $(timidity_DEPENDENCIES) + @rm -f timidity $(LINK) $(timidity_LDFLAGS) $(timidity_OBJECTS) $(timidity_LDADD) $(LIBS) tags: TAGS @@ -271,8 +269,7 @@ controls.h aq.o: aq.c ../config.h timidity.h ../utils/support.h common.h \ ../libarc/url.h ../utils/mblock.h output.h aq.h \ - ../utils/timer.h controls.h miditrace.h instrum.h playmidi.h \ - reverb.h + ../utils/timer.h controls.h miditrace.h instrum.h playmidi.h au_a.o: au_a.c ../config.h timidity.h ../utils/support.h output.h \ controls.h audio_cnv.o: audio_cnv.c ../config.h timidity.h ../utils/support.h \ diff -ruN TiMidity++-2.4.1/timidity/aq.c TiMidity++-2.5.0/timidity/aq.c --- TiMidity++-2.4.1/timidity/aq.c Wed Aug 11 16:53:04 1999 +++ TiMidity++-2.5.0/timidity/aq.c Sat Aug 21 16:31:40 1999 @@ -47,7 +47,7 @@ #include "miditrace.h" #include "instrum.h" #include "playmidi.h" -#include "reverb.h" + #define TEST_SPARE_RATE 0.9 #define MAX_BUCKET_TIME 0.2 @@ -477,11 +477,11 @@ int32 aq_fillable(void) { - int fillable; + int fillable; if(!IS_STREAM_TRACE) return 0; if(play_mode->acntl(PM_REQ_GETFILLABLE, &fillable) != -1) - return fillable; + return fillable; return device_qsize / Bps - aq_filled(); } diff -ruN TiMidity++-2.4.1/timidity/audio_cnv.c TiMidity++-2.5.0/timidity/audio_cnv.c --- TiMidity++-2.4.1/timidity/audio_cnv.c Mon Nov 30 16:56:50 1998 +++ TiMidity++-2.5.0/timidity/audio_cnv.c Wed Aug 25 18:12:24 1999 @@ -40,4376 +40,4376 @@ #define TABLE_SIZE14 16384 const char u2c_table[TABLE_SIZE8] = { -0x82, 0x86, 0x8a, 0x8e, 0x92, 0x96, 0x9a, 0x9e, -0xa2, 0xa6, 0xaa, 0xae, 0xb2, 0xb6, 0xba, 0xbe, -0xc1, 0xc3, 0xc5, 0xc7, 0xc9, 0xcb, 0xcd, 0xcf, -0xd1, 0xd3, 0xd5, 0xd7, 0xd9, 0xdb, 0xdd, 0xdf, -0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, -0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, -0xf0, 0xf1, 0xf1, 0xf2, 0xf2, 0xf3, 0xf3, 0xf4, -0xf4, 0xf5, 0xf5, 0xf6, 0xf6, 0xf7, 0xf7, 0xf8, -0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, -0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, -0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, -0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, -0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, -0x7e, 0x79, 0x75, 0x71, 0x6d, 0x69, 0x65, 0x61, -0x5d, 0x59, 0x55, 0x51, 0x4d, 0x49, 0x45, 0x41, -0x3e, 0x3c, 0x3a, 0x38, 0x36, 0x34, 0x32, 0x30, -0x2e, 0x2c, 0x2a, 0x28, 0x26, 0x24, 0x22, 0x20, -0x1f, 0x1e, 0x1d, 0x1c, 0x1b, 0x1a, 0x19, 0x18, -0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10, -0x0f, 0x0e, 0x0e, 0x0d, 0x0d, 0x0c, 0x0c, 0x0b, -0x0b, 0x0a, 0x0a, 0x09, 0x09, 0x08, 0x08, 0x07, -0x07, 0x07, 0x06, 0x06, 0x06, 0x06, 0x05, 0x05, -0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 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}; +(char)0x82, (char)0x86, (char)0x8a, (char)0x8e, (char)0x92, (char)0x96, (char)0x9a, (char)0x9e, +(char)0xa2, (char)0xa6, (char)0xaa, (char)0xae, (char)0xb2, (char)0xb6, (char)0xba, (char)0xbe, +(char)0xc1, (char)0xc3, (char)0xc5, (char)0xc7, (char)0xc9, (char)0xcb, (char)0xcd, (char)0xcf, +(char)0xd1, (char)0xd3, (char)0xd5, (char)0xd7, (char)0xd9, (char)0xdb, (char)0xdd, (char)0xdf, +(char)0xe0, (char)0xe1, (char)0xe2, (char)0xe3, (char)0xe4, (char)0xe5, (char)0xe6, (char)0xe7, +(char)0xe8, (char)0xe9, (char)0xea, (char)0xeb, (char)0xec, (char)0xed, (char)0xee, (char)0xef, +(char)0xf0, (char)0xf1, (char)0xf1, (char)0xf2, (char)0xf2, (char)0xf3, (char)0xf3, (char)0xf4, +(char)0xf4, (char)0xf5, (char)0xf5, (char)0xf6, (char)0xf6, (char)0xf7, (char)0xf7, (char)0xf8, +(char)0xf8, (char)0xf8, (char)0xf9, (char)0xf9, (char)0xf9, (char)0xf9, (char)0xfa, (char)0xfa, +(char)0xfa, (char)0xfa, (char)0xfb, (char)0xfb, (char)0xfb, (char)0xfb, (char)0xfc, (char)0xfc, +(char)0xfc, (char)0xfc, (char)0xfc, (char)0xfc, (char)0xfd, (char)0xfd, (char)0xfd, (char)0xfd, +(char)0xfd, (char)0xfd, (char)0xfd, (char)0xfd, (char)0xfe, (char)0xfe, (char)0xfe, (char)0xfe, +(char)0xfe, (char)0xfe, (char)0xfe, (char)0xfe, (char)0xfe, (char)0xfe, (char)0xfe, (char)0xfe, +(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)0x00, +(char)0x7e, (char)0x79, (char)0x75, (char)0x71, (char)0x6d, (char)0x69, (char)0x65, (char)0x61, +(char)0x5d, (char)0x59, (char)0x55, (char)0x51, (char)0x4d, (char)0x49, (char)0x45, (char)0x41, +(char)0x3e, (char)0x3c, (char)0x3a, (char)0x38, (char)0x36, (char)0x34, (char)0x32, (char)0x30, +(char)0x2e, (char)0x2c, (char)0x2a, (char)0x28, (char)0x26, (char)0x24, (char)0x22, (char)0x20, +(char)0x1f, (char)0x1e, (char)0x1d, (char)0x1c, (char)0x1b, (char)0x1a, (char)0x19, (char)0x18, +(char)0x17, (char)0x16, (char)0x15, (char)0x14, (char)0x13, (char)0x12, (char)0x11, (char)0x10, +(char)0x0f, (char)0x0e, (char)0x0e, (char)0x0d, (char)0x0d, (char)0x0c, (char)0x0c, (char)0x0b, +(char)0x0b, (char)0x0a, (char)0x0a, (char)0x09, (char)0x09, (char)0x08, (char)0x08, (char)0x07, +(char)0x07, (char)0x07, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00}; const char c2u_table[TABLE_SIZE8] = { -0xf0, 0xe0, 0xd8, 0xd0, 0xcc, 0xc8, 0xc4, 0xc0, -0xbe, 0xbc, 0xba, 0xb8, 0xb6, 0xb4, 0xb2, 0xb0, -0xaf, 0xae, 0xad, 0xac, 0xab, 0xaa, 0xa9, 0xa8, -0xa7, 0xa6, 0xa5, 0xa4, 0xa3, 0xa2, 0xa1, 0xa0, -0x9f, 0x9f, 0x9e, 0x9e, 0x9d, 0x9d, 0x9c, 0x9c, -0x9b, 0x9b, 0x9a, 0x9a, 0x99, 0x99, 0x98, 0x98, -0x97, 0x97, 0x96, 0x96, 0x95, 0x95, 0x94, 0x94, -0x93, 0x93, 0x92, 0x92, 0x91, 0x91, 0x90, 0x90, -0x8f, 0x8f, 0x8f, 0x8f, 0x8e, 0x8e, 0x8e, 0x8e, -0x8d, 0x8d, 0x8d, 0x8d, 0x8c, 0x8c, 0x8c, 0x8c, -0x8b, 0x8b, 0x8b, 0x8b, 0x8a, 0x8a, 0x8a, 0x8a, -0x89, 0x89, 0x89, 0x89, 0x88, 0x88, 0x88, 0x88, -0x87, 0x87, 0x87, 0x87, 0x86, 0x86, 0x86, 0x86, -0x85, 0x85, 0x85, 0x85, 0x84, 0x84, 0x84, 0x84, -0x83, 0x83, 0x83, 0x83, 0x82, 0x82, 0x82, 0x82, -0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, -0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, -0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, -0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, -0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, -0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, -0x0a, 0x0a, 0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, -0x0c, 0x0c, 0x0c, 0x0c, 0x0d, 0x0d, 0x0d, 0x0d, -0x0e, 0x0e, 0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, -0x10, 0x10, 0x11, 0x11, 0x12, 0x12, 0x13, 0x13, -0x14, 0x14, 0x15, 0x15, 0x16, 0x16, 0x17, 0x17, -0x18, 0x18, 0x19, 0x19, 0x1a, 0x1a, 0x1b, 0x1b, -0x1c, 0x1c, 0x1d, 0x1d, 0x1e, 0x1e, 0x1f, 0x1f, -0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, -0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, -0x30, 0x32, 0x34, 0x36, 0x38, 0x3a, 0x3c, 0x3d, -0x3f, 0x43, 0x47, 0x4b, 0x4f, 0x57, 0x5f, 0x6f}; +(char)0xf0, (char)0xe0, (char)0xd8, (char)0xd0, (char)0xcc, (char)0xc8, (char)0xc4, (char)0xc0, +(char)0xbe, (char)0xbc, (char)0xba, (char)0xb8, (char)0xb6, (char)0xb4, (char)0xb2, (char)0xb0, +(char)0xaf, (char)0xae, (char)0xad, (char)0xac, (char)0xab, (char)0xaa, (char)0xa9, (char)0xa8, +(char)0xa7, (char)0xa6, (char)0xa5, (char)0xa4, (char)0xa3, (char)0xa2, (char)0xa1, (char)0xa0, +(char)0x9f, (char)0x9f, (char)0x9e, (char)0x9e, (char)0x9d, (char)0x9d, (char)0x9c, (char)0x9c, +(char)0x9b, (char)0x9b, (char)0x9a, (char)0x9a, (char)0x99, (char)0x99, (char)0x98, (char)0x98, +(char)0x97, (char)0x97, (char)0x96, (char)0x96, (char)0x95, (char)0x95, (char)0x94, (char)0x94, +(char)0x93, (char)0x93, (char)0x92, (char)0x92, (char)0x91, (char)0x91, (char)0x90, (char)0x90, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x10, (char)0x10, (char)0x11, (char)0x11, (char)0x12, (char)0x12, (char)0x13, (char)0x13, +(char)0x14, (char)0x14, (char)0x15, (char)0x15, (char)0x16, (char)0x16, (char)0x17, (char)0x17, +(char)0x18, (char)0x18, (char)0x19, (char)0x19, (char)0x1a, (char)0x1a, (char)0x1b, (char)0x1b, +(char)0x1c, (char)0x1c, (char)0x1d, (char)0x1d, (char)0x1e, (char)0x1e, (char)0x1f, (char)0x1f, +(char)0x20, (char)0x21, (char)0x22, (char)0x23, (char)0x24, (char)0x25, (char)0x26, (char)0x27, +(char)0x28, (char)0x29, (char)0x2a, (char)0x2b, (char)0x2c, (char)0x2d, (char)0x2e, (char)0x2f, +(char)0x30, (char)0x32, (char)0x34, (char)0x36, (char)0x38, (char)0x3a, (char)0x3c, (char)0x3d, +(char)0x3f, (char)0x43, (char)0x47, (char)0x4b, (char)0x4f, (char)0x57, (char)0x5f, (char)0x6f}; const char c2a_table[TABLE_SIZE8] = { -0xd5, 0xc5, 0xf5, 0xfd, 0xe5, 0xe1, 0xed, 0xe9, -0x95, 0x97, 0x91, 0x93, 0x9d, 0x9f, 0x99, 0x9b, -0x85, 0x84, 0x87, 0x86, 0x81, 0x80, 0x83, 0x82, -0x8d, 0x8c, 0x8f, 0x8e, 0x89, 0x88, 0x8b, 0x8a, -0xb5, 0xb5, 0xb4, 0xb4, 0xb7, 0xb7, 0xb6, 0xb6, -0xb1, 0xb1, 0xb0, 0xb0, 0xb3, 0xb3, 0xb2, 0xb2, -0xbd, 0xbd, 0xbc, 0xbc, 0xbf, 0xbf, 0xbe, 0xbe, -0xb9, 0xb9, 0xb8, 0xb8, 0xbb, 0xbb, 0xba, 0xba, -0xa5, 0xa5, 0xa5, 0xa5, 0xa4, 0xa4, 0xa4, 0xa4, -0xa7, 0xa7, 0xa7, 0xa7, 0xa6, 0xa6, 0xa6, 0xa6, -0xa1, 0xa1, 0xa1, 0xa1, 0xa0, 0xa0, 0xa0, 0xa0, -0xa3, 0xa3, 0xa3, 0xa3, 0xa2, 0xa2, 0xa2, 0xa2, -0xad, 0xad, 0xad, 0xad, 0xac, 0xac, 0xac, 0xac, -0xaf, 0xaf, 0xaf, 0xaf, 0xae, 0xae, 0xae, 0xae, -0xa9, 0xa9, 0xa9, 0xa9, 0xa8, 0xa8, 0xa8, 0xa8, -0xab, 0xab, 0xab, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, -0x2a, 0x2a, 0x2a, 0x2a, 0x2b, 0x2b, 0x2b, 0x2b, -0x28, 0x28, 0x28, 0x28, 0x29, 0x29, 0x29, 0x29, -0x2e, 0x2e, 0x2e, 0x2e, 0x2f, 0x2f, 0x2f, 0x2f, -0x2c, 0x2c, 0x2c, 0x2c, 0x2d, 0x2d, 0x2d, 0x2d, -0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23, 0x23, -0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, -0x26, 0x26, 0x26, 0x26, 0x27, 0x27, 0x27, 0x27, -0x24, 0x24, 0x24, 0x24, 0x25, 0x25, 0x25, 0x25, -0x3a, 0x3a, 0x3b, 0x3b, 0x38, 0x38, 0x39, 0x39, -0x3e, 0x3e, 0x3f, 0x3f, 0x3c, 0x3c, 0x3d, 0x3d, -0x32, 0x32, 0x33, 0x33, 0x30, 0x30, 0x31, 0x31, -0x36, 0x36, 0x37, 0x37, 0x34, 0x34, 0x35, 0x35, -0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, -0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, -0x1a, 0x18, 0x1e, 0x1c, 0x12, 0x10, 0x16, 0x14, -0x6a, 0x6e, 0x62, 0x66, 0x7a, 0x72, 0x4a, 0x5a}; +(char)0xd5, (char)0xc5, (char)0xf5, (char)0xfd, (char)0xe5, (char)0xe1, (char)0xed, (char)0xe9, +(char)0x95, (char)0x97, (char)0x91, (char)0x93, (char)0x9d, (char)0x9f, (char)0x99, (char)0x9b, +(char)0x85, (char)0x84, (char)0x87, (char)0x86, (char)0x81, (char)0x80, (char)0x83, (char)0x82, +(char)0x8d, (char)0x8c, (char)0x8f, (char)0x8e, (char)0x89, (char)0x88, (char)0x8b, (char)0x8a, +(char)0xb5, (char)0xb5, (char)0xb4, (char)0xb4, (char)0xb7, (char)0xb7, (char)0xb6, (char)0xb6, +(char)0xb1, (char)0xb1, (char)0xb0, (char)0xb0, (char)0xb3, (char)0xb3, (char)0xb2, (char)0xb2, +(char)0xbd, (char)0xbd, (char)0xbc, (char)0xbc, (char)0xbf, (char)0xbf, (char)0xbe, (char)0xbe, +(char)0xb9, (char)0xb9, (char)0xb8, (char)0xb8, (char)0xbb, (char)0xbb, (char)0xba, (char)0xba, +(char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, +(char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, +(char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, +(char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, +(char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xac, (char)0xac, (char)0xac, (char)0xac, +(char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xae, (char)0xae, (char)0xae, (char)0xae, +(char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, +(char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, +(char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, +(char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x29, (char)0x29, (char)0x29, (char)0x29, +(char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, +(char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, +(char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x23, (char)0x23, (char)0x23, (char)0x23, +(char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x21, (char)0x21, (char)0x21, (char)0x21, +(char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x27, (char)0x27, (char)0x27, (char)0x27, +(char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x25, (char)0x25, (char)0x25, (char)0x25, +(char)0x3a, (char)0x3a, (char)0x3b, (char)0x3b, (char)0x38, (char)0x38, (char)0x39, (char)0x39, +(char)0x3e, (char)0x3e, (char)0x3f, (char)0x3f, (char)0x3c, (char)0x3c, (char)0x3d, (char)0x3d, +(char)0x32, (char)0x32, (char)0x33, (char)0x33, (char)0x30, (char)0x30, (char)0x31, (char)0x31, +(char)0x36, (char)0x36, (char)0x37, (char)0x37, (char)0x34, (char)0x34, (char)0x35, (char)0x35, +(char)0x0a, (char)0x0b, (char)0x08, (char)0x09, (char)0x0e, (char)0x0f, (char)0x0c, (char)0x0d, +(char)0x02, (char)0x03, (char)0x00, (char)0x01, (char)0x06, (char)0x07, (char)0x04, (char)0x05, +(char)0x1a, (char)0x18, (char)0x1e, (char)0x1c, (char)0x12, (char)0x10, (char)0x16, (char)0x14, +(char)0x6a, (char)0x6e, (char)0x62, (char)0x66, (char)0x7a, (char)0x72, (char)0x4a, (char)0x5a}; const char a2c_table[TABLE_SIZE8] = { -0xeb, 0xec, 0xe9, 0xea, 0xef, 0xf0, 0xed, 0xee, -0xe3, 0xe4, 0xe1, 0xe2, 0xe7, 0xe8, 0xe5, 0xe6, -0xf6, 0xf6, 0xf5, 0xf5, 0xf8, 0xf8, 0xf7, 0xf7, -0xf2, 0xf2, 0xf1, 0xf1, 0xf4, 0xf4, 0xf3, 0xf3, -0xaa, 0xae, 0xa2, 0xa6, 0xba, 0xbe, 0xb2, 0xb6, -0x8a, 0x8e, 0x82, 0x86, 0x9a, 0x9e, 0x92, 0x96, -0xd5, 0xd7, 0xd1, 0xd3, 0xdd, 0xdf, 0xd9, 0xdb, -0xc5, 0xc7, 0xc1, 0xc3, 0xcd, 0xcf, 0xc9, 0xcb, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, -0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, -0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, -0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, -0x15, 0x14, 0x17, 0x16, 0x11, 0x10, 0x13, 0x12, -0x1d, 0x1c, 0x1f, 0x1e, 0x19, 0x18, 0x1b, 0x1a, -0x0a, 0x0a, 0x0b, 0x0b, 0x08, 0x08, 0x09, 0x09, -0x0e, 0x0e, 0x0f, 0x0f, 0x0c, 0x0c, 0x0d, 0x0d, -0x56, 0x52, 0x5e, 0x5a, 0x46, 0x42, 0x4e, 0x4a, -0x76, 0x72, 0x7e, 0x7a, 0x66, 0x62, 0x6e, 0x6a, -0x2b, 0x29, 0x2f, 0x2d, 0x23, 0x21, 0x27, 0x25, -0x3b, 0x39, 0x3f, 0x3d, 0x33, 0x31, 0x37, 0x35, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, -0x07, 0x07, 0x07, 0x07, 0x06, 0x06, 0x06, 0x06, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03}; +(char)0xeb, (char)0xec, (char)0xe9, (char)0xea, (char)0xef, (char)0xf0, (char)0xed, (char)0xee, +(char)0xe3, (char)0xe4, (char)0xe1, (char)0xe2, (char)0xe7, (char)0xe8, (char)0xe5, (char)0xe6, +(char)0xf6, (char)0xf6, (char)0xf5, (char)0xf5, (char)0xf8, (char)0xf8, (char)0xf7, (char)0xf7, +(char)0xf2, (char)0xf2, (char)0xf1, (char)0xf1, (char)0xf4, (char)0xf4, (char)0xf3, (char)0xf3, +(char)0xaa, (char)0xae, (char)0xa2, (char)0xa6, (char)0xba, (char)0xbe, (char)0xb2, (char)0xb6, +(char)0x8a, (char)0x8e, (char)0x82, (char)0x86, (char)0x9a, (char)0x9e, (char)0x92, (char)0x96, +(char)0xd5, (char)0xd7, (char)0xd1, (char)0xd3, (char)0xdd, (char)0xdf, (char)0xd9, (char)0xdb, +(char)0xc5, (char)0xc7, (char)0xc1, (char)0xc3, (char)0xcd, (char)0xcf, (char)0xc9, (char)0xcb, +(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)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0xfb, (char)0xfb, (char)0xfb, (char)0xfb, (char)0xfc, (char)0xfc, (char)0xfc, (char)0xfc, +(char)0xf9, (char)0xf9, (char)0xf9, (char)0xf9, (char)0xfa, (char)0xfa, (char)0xfa, (char)0xfa, +(char)0xfe, (char)0xfe, (char)0xfe, (char)0xfe, (char)0xfe, (char)0xfe, (char)0xfe, (char)0xfe, +(char)0xfd, (char)0xfd, (char)0xfd, (char)0xfd, (char)0xfd, (char)0xfd, (char)0xfd, (char)0xfd, +(char)0x15, (char)0x14, (char)0x17, (char)0x16, (char)0x11, (char)0x10, (char)0x13, (char)0x12, +(char)0x1d, (char)0x1c, (char)0x1f, (char)0x1e, (char)0x19, (char)0x18, (char)0x1b, (char)0x1a, +(char)0x0a, (char)0x0a, (char)0x0b, (char)0x0b, (char)0x08, (char)0x08, (char)0x09, (char)0x09, +(char)0x0e, (char)0x0e, (char)0x0f, (char)0x0f, (char)0x0c, (char)0x0c, (char)0x0d, (char)0x0d, +(char)0x56, (char)0x52, (char)0x5e, (char)0x5a, (char)0x46, (char)0x42, (char)0x4e, (char)0x4a, +(char)0x76, (char)0x72, (char)0x7e, (char)0x7a, (char)0x66, (char)0x62, (char)0x6e, (char)0x6a, +(char)0x2b, (char)0x29, (char)0x2f, (char)0x2d, (char)0x23, (char)0x21, (char)0x27, (char)0x25, +(char)0x3b, (char)0x39, (char)0x3f, (char)0x3d, (char)0x33, (char)0x31, (char)0x37, (char)0x35, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03}; const short u2s_table[TABLE_SIZE8] = { -0x8284, 0x8684, 0x8a84, 0x8e84, 0x9284, 0x9684, 0x9a84, 0x9e84, -0xa284, 0xa684, 0xaa84, 0xae84, 0xb284, 0xb684, 0xba84, 0xbe84, -0xc184, 0xc384, 0xc584, 0xc784, 0xc984, 0xcb84, 0xcd84, 0xcf84, -0xd184, 0xd384, 0xd584, 0xd784, 0xd984, 0xdb84, 0xdd84, 0xdf84, -0xe104, 0xe204, 0xe304, 0xe404, 0xe504, 0xe604, 0xe704, 0xe804, -0xe904, 0xea04, 0xeb04, 0xec04, 0xed04, 0xee04, 0xef04, 0xf004, -0xf0c4, 0xf144, 0xf1c4, 0xf244, 0xf2c4, 0xf344, 0xf3c4, 0xf444, -0xf4c4, 0xf544, 0xf5c4, 0xf644, 0xf6c4, 0xf744, 0xf7c4, 0xf844, -0xf8a4, 0xf8e4, 0xf924, 0xf964, 0xf9a4, 0xf9e4, 0xfa24, 0xfa64, -0xfaa4, 0xfae4, 0xfb24, 0xfb64, 0xfba4, 0xfbe4, 0xfc24, 0xfc64, -0xfc94, 0xfcb4, 0xfcd4, 0xfcf4, 0xfd14, 0xfd34, 0xfd54, 0xfd74, -0xfd94, 0xfdb4, 0xfdd4, 0xfdf4, 0xfe14, 0xfe34, 0xfe54, 0xfe74, -0xfe8c, 0xfe9c, 0xfeac, 0xfebc, 0xfecc, 0xfedc, 0xfeec, 0xfefc, -0xff0c, 0xff1c, 0xff2c, 0xff3c, 0xff4c, 0xff5c, 0xff6c, 0xff7c, -0xff88, 0xff90, 0xff98, 0xffa0, 0xffa8, 0xffb0, 0xffb8, 0xffc0, -0xffc8, 0xffd0, 0xffd8, 0xffe0, 0xffe8, 0xfff0, 0xfff8, 0x0000, -0x7d7c, 0x797c, 0x757c, 0x717c, 0x6d7c, 0x697c, 0x657c, 0x617c, -0x5d7c, 0x597c, 0x557c, 0x517c, 0x4d7c, 0x497c, 0x457c, 0x417c, -0x3e7c, 0x3c7c, 0x3a7c, 0x387c, 0x367c, 0x347c, 0x327c, 0x307c, -0x2e7c, 0x2c7c, 0x2a7c, 0x287c, 0x267c, 0x247c, 0x227c, 0x207c, -0x1efc, 0x1dfc, 0x1cfc, 0x1bfc, 0x1afc, 0x19fc, 0x18fc, 0x17fc, -0x16fc, 0x15fc, 0x14fc, 0x13fc, 0x12fc, 0x11fc, 0x10fc, 0x0ffc, -0x0f3c, 0x0ebc, 0x0e3c, 0x0dbc, 0x0d3c, 0x0cbc, 0x0c3c, 0x0bbc, -0x0b3c, 0x0abc, 0x0a3c, 0x09bc, 0x093c, 0x08bc, 0x083c, 0x07bc, -0x075c, 0x071c, 0x06dc, 0x069c, 0x065c, 0x061c, 0x05dc, 0x059c, -0x055c, 0x051c, 0x04dc, 0x049c, 0x045c, 0x041c, 0x03dc, 0x039c, -0x036c, 0x034c, 0x032c, 0x030c, 0x02ec, 0x02cc, 0x02ac, 0x028c, -0x026c, 0x024c, 0x022c, 0x020c, 0x01ec, 0x01cc, 0x01ac, 0x018c, -0x0174, 0x0164, 0x0154, 0x0144, 0x0134, 0x0124, 0x0114, 0x0104, -0x00f4, 0x00e4, 0x00d4, 0x00c4, 0x00b4, 0x00a4, 0x0094, 0x0084, -0x0078, 0x0070, 0x0068, 0x0060, 0x0058, 0x0050, 0x0048, 0x0040, -0x0038, 0x0030, 0x0028, 0x0020, 0x0018, 0x0010, 0x0008, 0x0000}; +(short)0x8284, (short)0x8684, (short)0x8a84, (short)0x8e84, (short)0x9284, (short)0x9684, (short)0x9a84, (short)0x9e84, +(short)0xa284, (short)0xa684, (short)0xaa84, (short)0xae84, (short)0xb284, (short)0xb684, (short)0xba84, (short)0xbe84, +(short)0xc184, (short)0xc384, (short)0xc584, (short)0xc784, (short)0xc984, (short)0xcb84, (short)0xcd84, (short)0xcf84, +(short)0xd184, (short)0xd384, (short)0xd584, (short)0xd784, (short)0xd984, (short)0xdb84, (short)0xdd84, (short)0xdf84, +(short)0xe104, (short)0xe204, (short)0xe304, (short)0xe404, (short)0xe504, (short)0xe604, (short)0xe704, (short)0xe804, +(short)0xe904, (short)0xea04, (short)0xeb04, (short)0xec04, (short)0xed04, (short)0xee04, (short)0xef04, (short)0xf004, +(short)0xf0c4, (short)0xf144, (short)0xf1c4, (short)0xf244, (short)0xf2c4, (short)0xf344, (short)0xf3c4, (short)0xf444, +(short)0xf4c4, (short)0xf544, (short)0xf5c4, (short)0xf644, (short)0xf6c4, (short)0xf744, (short)0xf7c4, (short)0xf844, +(short)0xf8a4, (short)0xf8e4, (short)0xf924, (short)0xf964, (short)0xf9a4, (short)0xf9e4, (short)0xfa24, (short)0xfa64, +(short)0xfaa4, (short)0xfae4, (short)0xfb24, (short)0xfb64, (short)0xfba4, (short)0xfbe4, (short)0xfc24, (short)0xfc64, +(short)0xfc94, (short)0xfcb4, (short)0xfcd4, (short)0xfcf4, (short)0xfd14, (short)0xfd34, (short)0xfd54, (short)0xfd74, +(short)0xfd94, (short)0xfdb4, (short)0xfdd4, (short)0xfdf4, (short)0xfe14, (short)0xfe34, (short)0xfe54, (short)0xfe74, +(short)0xfe8c, (short)0xfe9c, (short)0xfeac, (short)0xfebc, (short)0xfecc, (short)0xfedc, (short)0xfeec, (short)0xfefc, +(short)0xff0c, (short)0xff1c, (short)0xff2c, (short)0xff3c, (short)0xff4c, (short)0xff5c, (short)0xff6c, (short)0xff7c, +(short)0xff88, (short)0xff90, (short)0xff98, (short)0xffa0, (short)0xffa8, (short)0xffb0, (short)0xffb8, (short)0xffc0, +(short)0xffc8, (short)0xffd0, (short)0xffd8, (short)0xffe0, (short)0xffe8, (short)0xfff0, (short)0xfff8, (short)0x0000, +(short)0x7d7c, (short)0x797c, (short)0x757c, (short)0x717c, (short)0x6d7c, (short)0x697c, (short)0x657c, (short)0x617c, +(short)0x5d7c, (short)0x597c, (short)0x557c, (short)0x517c, (short)0x4d7c, (short)0x497c, (short)0x457c, (short)0x417c, +(short)0x3e7c, (short)0x3c7c, (short)0x3a7c, (short)0x387c, (short)0x367c, (short)0x347c, (short)0x327c, (short)0x307c, +(short)0x2e7c, (short)0x2c7c, (short)0x2a7c, (short)0x287c, (short)0x267c, (short)0x247c, (short)0x227c, (short)0x207c, +(short)0x1efc, (short)0x1dfc, (short)0x1cfc, (short)0x1bfc, (short)0x1afc, (short)0x19fc, (short)0x18fc, (short)0x17fc, +(short)0x16fc, (short)0x15fc, (short)0x14fc, (short)0x13fc, (short)0x12fc, (short)0x11fc, (short)0x10fc, (short)0x0ffc, +(short)0x0f3c, (short)0x0ebc, (short)0x0e3c, (short)0x0dbc, (short)0x0d3c, (short)0x0cbc, (short)0x0c3c, (short)0x0bbc, +(short)0x0b3c, (short)0x0abc, (short)0x0a3c, (short)0x09bc, (short)0x093c, (short)0x08bc, (short)0x083c, (short)0x07bc, +(short)0x075c, (short)0x071c, (short)0x06dc, (short)0x069c, (short)0x065c, (short)0x061c, (short)0x05dc, (short)0x059c, +(short)0x055c, (short)0x051c, (short)0x04dc, (short)0x049c, (short)0x045c, (short)0x041c, (short)0x03dc, (short)0x039c, +(short)0x036c, (short)0x034c, (short)0x032c, (short)0x030c, (short)0x02ec, (short)0x02cc, (short)0x02ac, (short)0x028c, +(short)0x026c, (short)0x024c, (short)0x022c, (short)0x020c, (short)0x01ec, (short)0x01cc, (short)0x01ac, (short)0x018c, +(short)0x0174, (short)0x0164, (short)0x0154, (short)0x0144, (short)0x0134, (short)0x0124, (short)0x0114, (short)0x0104, +(short)0x00f4, (short)0x00e4, (short)0x00d4, (short)0x00c4, (short)0x00b4, (short)0x00a4, (short)0x0094, (short)0x0084, +(short)0x0078, (short)0x0070, (short)0x0068, (short)0x0060, (short)0x0058, (short)0x0050, (short)0x0048, (short)0x0040, +(short)0x0038, (short)0x0030, (short)0x0028, (short)0x0020, (short)0x0018, (short)0x0010, (short)0x0008, (short)0x0000}; const char s2u_table[TABLE_SIZE14] = { -0xff, 0xfe, 0xfe, 0xfd, 0xfd, 0xfc, 0xfc, 0xfb, -0xfb, 0xfa, 0xfa, 0xf9, 0xf9, 0xf8, 0xf8, 0xf7, -0xf7, 0xf6, 0xf6, 0xf5, 0xf5, 0xf4, 0xf4, 0xf3, -0xf3, 0xf2, 0xf2, 0xf1, 0xf1, 0xf0, 0xf0, 0xef, -0xef, 0xef, 0xef, 0xee, 0xee, 0xee, 0xee, 0xed, -0xed, 0xed, 0xed, 0xec, 0xec, 0xec, 0xec, 0xeb, -0xeb, 0xeb, 0xeb, 0xea, 0xea, 0xea, 0xea, 0xe9, -0xe9, 0xe9, 0xe9, 0xe8, 0xe8, 0xe8, 0xe8, 0xe7, -0xe7, 0xe7, 0xe7, 0xe6, 0xe6, 0xe6, 0xe6, 0xe5, -0xe5, 0xe5, 0xe5, 0xe4, 0xe4, 0xe4, 0xe4, 0xe3, -0xe3, 0xe3, 0xe3, 0xe2, 0xe2, 0xe2, 0xe2, 0xe1, -0xe1, 0xe1, 0xe1, 0xe0, 0xe0, 0xe0, 0xe0, 0xdf, -0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xde, -0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdd, -0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdc, -0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc, 0xdb, -0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xda, -0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xd9, -0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd8, -0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd7, -0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd6, -0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd5, -0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd4, -0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd3, -0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd2, -0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd1, -0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd0, -0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xcf, -0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, -0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xce, -0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, -0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce, 0xcd, -0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, -0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcc, -0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, -0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcb, -0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, -0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xca, -0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, -0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xca, 0xc9, -0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, -0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc8, -0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, -0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc7, -0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, -0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc6, -0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, -0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc5, -0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, -0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc4, -0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, -0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc3, -0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, -0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc2, -0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, -0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc1, -0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, -0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1, 0xc0, -0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, -0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 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, 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, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, -0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, -0x40, 0x40, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, -0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, -0x41, 0x41, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, -0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, -0x42, 0x42, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, -0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, 0x43, -0x43, 0x43, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, -0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, -0x44, 0x44, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, -0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, 0x45, -0x45, 0x45, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, -0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, 0x46, -0x46, 0x46, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, -0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, 0x47, -0x47, 0x47, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, -0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, 0x48, -0x48, 0x48, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, -0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, 0x49, -0x49, 0x49, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, -0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, -0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, -0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, 0x4b, -0x4b, 0x4b, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, -0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, -0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, -0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, 0x4d, -0x4d, 0x4d, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, -0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, 0x4e, -0x4e, 0x4e, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, -0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, 0x4f, -0x4f, 0x4f, 0x50, 0x50, 0x50, 0x50, 0x50, 0x50, -0x50, 0x50, 0x51, 0x51, 0x51, 0x51, 0x51, 0x51, -0x51, 0x51, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, -0x52, 0x52, 0x53, 0x53, 0x53, 0x53, 0x53, 0x53, -0x53, 0x53, 0x54, 0x54, 0x54, 0x54, 0x54, 0x54, -0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, -0x55, 0x55, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, -0x56, 0x56, 0x57, 0x57, 0x57, 0x57, 0x57, 0x57, -0x57, 0x57, 0x58, 0x58, 0x58, 0x58, 0x58, 0x58, -0x58, 0x58, 0x59, 0x59, 0x59, 0x59, 0x59, 0x59, -0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, 0x5a, -0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, 0x5b, -0x5b, 0x5b, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, -0x5c, 0x5c, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, 0x5d, -0x5d, 0x5d, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, 0x5e, -0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, -0x5f, 0x5f, 0x60, 0x60, 0x60, 0x60, 0x61, 0x61, -0x61, 0x61, 0x62, 0x62, 0x62, 0x62, 0x63, 0x63, -0x63, 0x63, 0x64, 0x64, 0x64, 0x64, 0x65, 0x65, -0x65, 0x65, 0x66, 0x66, 0x66, 0x66, 0x67, 0x67, -0x67, 0x67, 0x68, 0x68, 0x68, 0x68, 0x69, 0x69, -0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, -0x6b, 0x6b, 0x6c, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, -0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, -0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x72, 0x72, -0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x76, 0x76, -0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, -0x7b, 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7e, 0x7e}; +(char)0xff, (char)0xfe, (char)0xfe, (char)0xfd, (char)0xfd, (char)0xfc, (char)0xfc, (char)0xfb, +(char)0xfb, (char)0xfa, (char)0xfa, (char)0xf9, (char)0xf9, (char)0xf8, (char)0xf8, (char)0xf7, +(char)0xf7, (char)0xf6, (char)0xf6, (char)0xf5, (char)0xf5, (char)0xf4, (char)0xf4, (char)0xf3, +(char)0xf3, (char)0xf2, (char)0xf2, (char)0xf1, (char)0xf1, (char)0xf0, (char)0xf0, (char)0xef, +(char)0xef, (char)0xef, (char)0xef, (char)0xee, (char)0xee, (char)0xee, (char)0xee, (char)0xed, +(char)0xed, (char)0xed, (char)0xed, (char)0xec, (char)0xec, (char)0xec, (char)0xec, (char)0xeb, +(char)0xeb, (char)0xeb, (char)0xeb, (char)0xea, (char)0xea, (char)0xea, (char)0xea, (char)0xe9, +(char)0xe9, (char)0xe9, (char)0xe9, (char)0xe8, (char)0xe8, (char)0xe8, (char)0xe8, (char)0xe7, +(char)0xe7, (char)0xe7, (char)0xe7, (char)0xe6, (char)0xe6, (char)0xe6, (char)0xe6, (char)0xe5, +(char)0xe5, (char)0xe5, (char)0xe5, (char)0xe4, (char)0xe4, (char)0xe4, (char)0xe4, (char)0xe3, +(char)0xe3, (char)0xe3, (char)0xe3, (char)0xe2, (char)0xe2, (char)0xe2, (char)0xe2, (char)0xe1, +(char)0xe1, (char)0xe1, (char)0xe1, (char)0xe0, (char)0xe0, (char)0xe0, (char)0xe0, (char)0xdf, +(char)0xdf, (char)0xdf, (char)0xdf, (char)0xdf, (char)0xdf, (char)0xdf, (char)0xdf, (char)0xde, +(char)0xde, (char)0xde, (char)0xde, (char)0xde, (char)0xde, (char)0xde, (char)0xde, (char)0xdd, +(char)0xdd, (char)0xdd, (char)0xdd, (char)0xdd, (char)0xdd, (char)0xdd, (char)0xdd, (char)0xdc, +(char)0xdc, (char)0xdc, (char)0xdc, (char)0xdc, (char)0xdc, (char)0xdc, (char)0xdc, (char)0xdb, +(char)0xdb, (char)0xdb, (char)0xdb, (char)0xdb, (char)0xdb, (char)0xdb, (char)0xdb, (char)0xda, +(char)0xda, (char)0xda, (char)0xda, (char)0xda, (char)0xda, (char)0xda, (char)0xda, (char)0xd9, +(char)0xd9, (char)0xd9, (char)0xd9, (char)0xd9, (char)0xd9, (char)0xd9, (char)0xd9, (char)0xd8, +(char)0xd8, (char)0xd8, (char)0xd8, (char)0xd8, (char)0xd8, (char)0xd8, (char)0xd8, (char)0xd7, +(char)0xd7, (char)0xd7, (char)0xd7, (char)0xd7, (char)0xd7, (char)0xd7, (char)0xd7, (char)0xd6, +(char)0xd6, (char)0xd6, (char)0xd6, (char)0xd6, (char)0xd6, (char)0xd6, (char)0xd6, (char)0xd5, +(char)0xd5, (char)0xd5, (char)0xd5, (char)0xd5, (char)0xd5, (char)0xd5, (char)0xd5, (char)0xd4, +(char)0xd4, (char)0xd4, (char)0xd4, (char)0xd4, (char)0xd4, (char)0xd4, (char)0xd4, (char)0xd3, +(char)0xd3, (char)0xd3, (char)0xd3, (char)0xd3, (char)0xd3, (char)0xd3, (char)0xd3, (char)0xd2, +(char)0xd2, (char)0xd2, (char)0xd2, (char)0xd2, (char)0xd2, (char)0xd2, (char)0xd2, (char)0xd1, +(char)0xd1, (char)0xd1, (char)0xd1, (char)0xd1, (char)0xd1, (char)0xd1, (char)0xd1, (char)0xd0, +(char)0xd0, (char)0xd0, (char)0xd0, (char)0xd0, (char)0xd0, (char)0xd0, (char)0xd0, (char)0xcf, +(char)0xcf, (char)0xcf, (char)0xcf, (char)0xcf, (char)0xcf, (char)0xcf, (char)0xcf, (char)0xcf, +(char)0xcf, (char)0xcf, (char)0xcf, (char)0xcf, (char)0xcf, (char)0xcf, (char)0xcf, (char)0xce, +(char)0xce, (char)0xce, (char)0xce, (char)0xce, (char)0xce, (char)0xce, (char)0xce, (char)0xce, +(char)0xce, (char)0xce, (char)0xce, (char)0xce, (char)0xce, (char)0xce, (char)0xce, (char)0xcd, +(char)0xcd, (char)0xcd, (char)0xcd, (char)0xcd, (char)0xcd, (char)0xcd, (char)0xcd, (char)0xcd, +(char)0xcd, (char)0xcd, (char)0xcd, (char)0xcd, (char)0xcd, (char)0xcd, (char)0xcd, (char)0xcc, +(char)0xcc, (char)0xcc, (char)0xcc, (char)0xcc, (char)0xcc, (char)0xcc, (char)0xcc, (char)0xcc, +(char)0xcc, (char)0xcc, (char)0xcc, (char)0xcc, (char)0xcc, (char)0xcc, (char)0xcc, (char)0xcb, +(char)0xcb, (char)0xcb, (char)0xcb, (char)0xcb, (char)0xcb, (char)0xcb, (char)0xcb, (char)0xcb, +(char)0xcb, (char)0xcb, (char)0xcb, (char)0xcb, (char)0xcb, (char)0xcb, (char)0xcb, (char)0xca, +(char)0xca, (char)0xca, (char)0xca, (char)0xca, (char)0xca, (char)0xca, (char)0xca, (char)0xca, +(char)0xca, (char)0xca, (char)0xca, (char)0xca, (char)0xca, (char)0xca, (char)0xca, (char)0xc9, +(char)0xc9, (char)0xc9, (char)0xc9, (char)0xc9, (char)0xc9, (char)0xc9, (char)0xc9, (char)0xc9, +(char)0xc9, (char)0xc9, (char)0xc9, (char)0xc9, (char)0xc9, (char)0xc9, (char)0xc9, (char)0xc8, +(char)0xc8, (char)0xc8, (char)0xc8, (char)0xc8, (char)0xc8, (char)0xc8, (char)0xc8, (char)0xc8, +(char)0xc8, (char)0xc8, (char)0xc8, (char)0xc8, (char)0xc8, (char)0xc8, (char)0xc8, (char)0xc7, +(char)0xc7, (char)0xc7, (char)0xc7, (char)0xc7, (char)0xc7, (char)0xc7, (char)0xc7, (char)0xc7, +(char)0xc7, (char)0xc7, (char)0xc7, (char)0xc7, (char)0xc7, (char)0xc7, (char)0xc7, (char)0xc6, +(char)0xc6, (char)0xc6, (char)0xc6, (char)0xc6, (char)0xc6, (char)0xc6, (char)0xc6, (char)0xc6, +(char)0xc6, (char)0xc6, (char)0xc6, (char)0xc6, (char)0xc6, (char)0xc6, (char)0xc6, (char)0xc5, +(char)0xc5, (char)0xc5, (char)0xc5, (char)0xc5, (char)0xc5, (char)0xc5, (char)0xc5, (char)0xc5, +(char)0xc5, (char)0xc5, (char)0xc5, (char)0xc5, (char)0xc5, (char)0xc5, (char)0xc5, (char)0xc4, +(char)0xc4, (char)0xc4, (char)0xc4, (char)0xc4, (char)0xc4, (char)0xc4, (char)0xc4, (char)0xc4, +(char)0xc4, (char)0xc4, (char)0xc4, (char)0xc4, (char)0xc4, (char)0xc4, (char)0xc4, (char)0xc3, +(char)0xc3, (char)0xc3, (char)0xc3, (char)0xc3, (char)0xc3, (char)0xc3, (char)0xc3, (char)0xc3, +(char)0xc3, (char)0xc3, (char)0xc3, (char)0xc3, (char)0xc3, (char)0xc3, (char)0xc3, (char)0xc2, +(char)0xc2, (char)0xc2, (char)0xc2, (char)0xc2, (char)0xc2, (char)0xc2, (char)0xc2, (char)0xc2, +(char)0xc2, (char)0xc2, (char)0xc2, (char)0xc2, (char)0xc2, (char)0xc2, (char)0xc2, (char)0xc1, +(char)0xc1, (char)0xc1, (char)0xc1, (char)0xc1, (char)0xc1, (char)0xc1, (char)0xc1, (char)0xc1, +(char)0xc1, (char)0xc1, (char)0xc1, (char)0xc1, (char)0xc1, (char)0xc1, (char)0xc1, (char)0xc0, +(char)0xc0, (char)0xc0, (char)0xc0, (char)0xc0, (char)0xc0, (char)0xc0, (char)0xc0, (char)0xc0, +(char)0xc0, (char)0xc0, (char)0xc0, (char)0xc0, (char)0xc0, (char)0xc0, (char)0xc0, (char)0xbf, +(char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, +(char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, +(char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, +(char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbf, (char)0xbe, +(char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, +(char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, +(char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, +(char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbe, (char)0xbd, +(char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, +(char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, +(char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, +(char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbd, (char)0xbc, +(char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, +(char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, +(char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, +(char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbc, (char)0xbb, +(char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, +(char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, +(char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, +(char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xbb, (char)0xba, +(char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, +(char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, +(char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, +(char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xba, (char)0xb9, +(char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, +(char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, +(char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, +(char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb9, (char)0xb8, +(char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, +(char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, +(char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, +(char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb8, (char)0xb7, +(char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, +(char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, +(char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, +(char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb7, (char)0xb6, +(char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, +(char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, +(char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, +(char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb6, (char)0xb5, +(char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, +(char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, +(char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, +(char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb5, (char)0xb4, +(char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, +(char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, +(char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, +(char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb4, (char)0xb3, +(char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, +(char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, +(char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, +(char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb3, (char)0xb2, +(char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, +(char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, +(char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, +(char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb2, (char)0xb1, +(char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, +(char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, +(char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, +(char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb1, (char)0xb0, +(char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, +(char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, +(char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, +(char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xb0, (char)0xaf, +(char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, +(char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, +(char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, +(char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, +(char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, +(char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, +(char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, +(char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xaf, (char)0xae, +(char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, +(char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, +(char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, +(char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, +(char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, +(char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, +(char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, +(char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xae, (char)0xad, +(char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, +(char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, +(char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, +(char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, +(char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, +(char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, +(char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, +(char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xad, (char)0xac, +(char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, +(char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, +(char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, +(char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, +(char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, +(char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, +(char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, +(char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xac, (char)0xab, +(char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, +(char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, +(char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, +(char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, +(char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, +(char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, +(char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, +(char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xab, (char)0xaa, +(char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, +(char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, +(char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, +(char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, +(char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, +(char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, +(char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, +(char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xaa, (char)0xa9, +(char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, +(char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, +(char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, +(char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, +(char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, +(char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, +(char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, +(char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa9, (char)0xa8, +(char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, +(char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, +(char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, +(char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, +(char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, +(char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, +(char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, +(char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa8, (char)0xa7, +(char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, +(char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, +(char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, +(char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, +(char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, +(char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, +(char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, +(char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa7, (char)0xa6, +(char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, +(char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, +(char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, +(char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, +(char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, +(char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, +(char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, +(char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa6, (char)0xa5, +(char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, +(char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, +(char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, +(char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, +(char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, +(char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, +(char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, +(char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa5, (char)0xa4, +(char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, +(char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, +(char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, +(char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, +(char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, +(char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, +(char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, +(char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa4, (char)0xa3, +(char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, +(char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, +(char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, +(char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, +(char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, +(char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, +(char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, +(char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa3, (char)0xa2, +(char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, +(char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, +(char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, +(char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, +(char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, +(char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, +(char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, +(char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa2, (char)0xa1, +(char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, +(char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, +(char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, +(char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, +(char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, +(char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, +(char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, +(char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa1, (char)0xa0, +(char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, +(char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, +(char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, +(char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, +(char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, +(char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, +(char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, +(char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0xa0, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, +(char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9f, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, +(char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9e, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, +(char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9d, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, +(char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9c, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, +(char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9b, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, +(char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x9a, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, +(char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x99, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, +(char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x98, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, +(char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x97, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, +(char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x96, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, +(char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x95, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, +(char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x94, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, +(char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x93, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, +(char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x92, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, +(char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x91, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, +(char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x90, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, +(char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8f, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, +(char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8e, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, +(char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8d, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, +(char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8c, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, +(char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8b, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, +(char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x8a, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, +(char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x89, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, +(char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x88, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, +(char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x87, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, +(char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x86, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, +(char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x85, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, +(char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x84, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, +(char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x83, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, +(char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x82, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, +(char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x81, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, (char)0x80, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, (char)0x00, +(char)0x00, (char)0x00, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, (char)0x01, +(char)0x01, (char)0x01, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, (char)0x02, +(char)0x02, (char)0x02, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, (char)0x03, +(char)0x03, (char)0x03, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, (char)0x04, +(char)0x04, (char)0x04, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, (char)0x05, +(char)0x05, (char)0x05, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, (char)0x06, +(char)0x06, (char)0x06, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, (char)0x07, +(char)0x07, (char)0x07, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, (char)0x08, +(char)0x08, (char)0x08, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, (char)0x09, +(char)0x09, (char)0x09, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, (char)0x0a, +(char)0x0a, (char)0x0a, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, (char)0x0b, +(char)0x0b, (char)0x0b, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, (char)0x0c, +(char)0x0c, (char)0x0c, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, (char)0x0d, +(char)0x0d, (char)0x0d, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, (char)0x0e, +(char)0x0e, (char)0x0e, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, (char)0x0f, +(char)0x0f, (char)0x0f, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, (char)0x10, +(char)0x10, (char)0x10, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, (char)0x11, +(char)0x11, (char)0x11, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, (char)0x12, +(char)0x12, (char)0x12, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, (char)0x13, +(char)0x13, (char)0x13, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, (char)0x14, +(char)0x14, (char)0x14, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, (char)0x15, +(char)0x15, (char)0x15, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, (char)0x16, +(char)0x16, (char)0x16, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, (char)0x17, +(char)0x17, (char)0x17, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, (char)0x18, +(char)0x18, (char)0x18, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, (char)0x19, +(char)0x19, (char)0x19, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, (char)0x1a, +(char)0x1a, (char)0x1a, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, (char)0x1b, +(char)0x1b, (char)0x1b, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, (char)0x1c, +(char)0x1c, (char)0x1c, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, (char)0x1d, +(char)0x1d, (char)0x1d, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, (char)0x1e, +(char)0x1e, (char)0x1e, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, (char)0x1f, +(char)0x1f, (char)0x1f, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, +(char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, +(char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, +(char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, +(char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, +(char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, +(char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, +(char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, (char)0x20, +(char)0x20, (char)0x20, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, +(char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, +(char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, +(char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, +(char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, +(char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, +(char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, +(char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, (char)0x21, +(char)0x21, (char)0x21, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, +(char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, +(char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, +(char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, +(char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, +(char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, +(char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, +(char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, (char)0x22, +(char)0x22, (char)0x22, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, +(char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, +(char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, +(char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, +(char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, +(char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, +(char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, +(char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, (char)0x23, +(char)0x23, (char)0x23, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, +(char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, +(char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, +(char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, +(char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, +(char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, +(char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, +(char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, (char)0x24, +(char)0x24, (char)0x24, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, +(char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, +(char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, +(char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, +(char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, +(char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, +(char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, +(char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, (char)0x25, +(char)0x25, (char)0x25, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, +(char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, +(char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, +(char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, +(char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, +(char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, +(char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, +(char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, (char)0x26, +(char)0x26, (char)0x26, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, +(char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, +(char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, +(char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, +(char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, +(char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, +(char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, +(char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, (char)0x27, +(char)0x27, (char)0x27, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, +(char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, +(char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, +(char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, +(char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, +(char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, +(char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, +(char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, (char)0x28, +(char)0x28, (char)0x28, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, +(char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, +(char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, +(char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, +(char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, +(char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, +(char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, +(char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, (char)0x29, +(char)0x29, (char)0x29, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, +(char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, +(char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, +(char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, +(char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, +(char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, +(char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, +(char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, (char)0x2a, +(char)0x2a, (char)0x2a, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, +(char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, +(char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, +(char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, +(char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, +(char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, +(char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, +(char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, (char)0x2b, +(char)0x2b, (char)0x2b, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, +(char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, +(char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, +(char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, +(char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, +(char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, +(char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, +(char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, (char)0x2c, +(char)0x2c, (char)0x2c, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, +(char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, +(char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, +(char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, +(char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, +(char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, +(char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, +(char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, (char)0x2d, +(char)0x2d, (char)0x2d, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, +(char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, +(char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, +(char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, +(char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, +(char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, +(char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, +(char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, (char)0x2e, +(char)0x2e, (char)0x2e, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, +(char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, +(char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, +(char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, +(char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, +(char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, +(char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, +(char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, (char)0x2f, +(char)0x2f, (char)0x2f, (char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, +(char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, +(char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, +(char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, (char)0x30, +(char)0x30, (char)0x30, (char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, +(char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, +(char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, +(char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, (char)0x31, +(char)0x31, (char)0x31, (char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, +(char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, +(char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, +(char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, (char)0x32, +(char)0x32, (char)0x32, (char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, +(char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, +(char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, +(char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, (char)0x33, +(char)0x33, (char)0x33, (char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, +(char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, +(char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, +(char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, (char)0x34, +(char)0x34, (char)0x34, (char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, +(char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, +(char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, +(char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, (char)0x35, +(char)0x35, (char)0x35, (char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, +(char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, +(char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, +(char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, (char)0x36, +(char)0x36, (char)0x36, (char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, +(char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, +(char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, +(char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, (char)0x37, +(char)0x37, (char)0x37, (char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, +(char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, +(char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, +(char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, (char)0x38, +(char)0x38, (char)0x38, (char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, +(char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, +(char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, +(char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, (char)0x39, +(char)0x39, (char)0x39, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, +(char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, +(char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, +(char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, (char)0x3a, +(char)0x3a, (char)0x3a, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, +(char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, +(char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, +(char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, (char)0x3b, +(char)0x3b, (char)0x3b, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, +(char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, +(char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, +(char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, (char)0x3c, +(char)0x3c, (char)0x3c, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, +(char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, +(char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, +(char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, (char)0x3d, +(char)0x3d, (char)0x3d, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, +(char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, +(char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, +(char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, (char)0x3e, +(char)0x3e, (char)0x3e, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, +(char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, +(char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, +(char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, (char)0x3f, +(char)0x3f, (char)0x3f, (char)0x40, (char)0x40, (char)0x40, (char)0x40, (char)0x40, (char)0x40, +(char)0x40, (char)0x40, (char)0x40, (char)0x40, (char)0x40, (char)0x40, (char)0x40, (char)0x40, +(char)0x40, (char)0x40, (char)0x41, (char)0x41, (char)0x41, (char)0x41, (char)0x41, (char)0x41, +(char)0x41, (char)0x41, (char)0x41, (char)0x41, (char)0x41, (char)0x41, (char)0x41, (char)0x41, +(char)0x41, (char)0x41, (char)0x42, (char)0x42, (char)0x42, (char)0x42, (char)0x42, (char)0x42, +(char)0x42, (char)0x42, (char)0x42, (char)0x42, (char)0x42, (char)0x42, (char)0x42, (char)0x42, +(char)0x42, (char)0x42, (char)0x43, (char)0x43, (char)0x43, (char)0x43, (char)0x43, (char)0x43, +(char)0x43, (char)0x43, (char)0x43, (char)0x43, (char)0x43, (char)0x43, (char)0x43, (char)0x43, +(char)0x43, (char)0x43, (char)0x44, (char)0x44, (char)0x44, (char)0x44, (char)0x44, (char)0x44, +(char)0x44, (char)0x44, (char)0x44, (char)0x44, (char)0x44, (char)0x44, (char)0x44, (char)0x44, +(char)0x44, (char)0x44, (char)0x45, (char)0x45, (char)0x45, (char)0x45, (char)0x45, (char)0x45, +(char)0x45, (char)0x45, (char)0x45, (char)0x45, (char)0x45, (char)0x45, (char)0x45, (char)0x45, +(char)0x45, (char)0x45, (char)0x46, (char)0x46, (char)0x46, (char)0x46, (char)0x46, (char)0x46, +(char)0x46, (char)0x46, (char)0x46, (char)0x46, (char)0x46, (char)0x46, (char)0x46, (char)0x46, +(char)0x46, (char)0x46, (char)0x47, (char)0x47, (char)0x47, (char)0x47, (char)0x47, (char)0x47, +(char)0x47, (char)0x47, (char)0x47, (char)0x47, (char)0x47, (char)0x47, (char)0x47, (char)0x47, +(char)0x47, (char)0x47, (char)0x48, (char)0x48, (char)0x48, (char)0x48, (char)0x48, (char)0x48, +(char)0x48, (char)0x48, (char)0x48, (char)0x48, (char)0x48, (char)0x48, (char)0x48, (char)0x48, +(char)0x48, (char)0x48, (char)0x49, (char)0x49, (char)0x49, (char)0x49, (char)0x49, (char)0x49, +(char)0x49, (char)0x49, (char)0x49, (char)0x49, (char)0x49, (char)0x49, (char)0x49, (char)0x49, +(char)0x49, (char)0x49, (char)0x4a, (char)0x4a, (char)0x4a, (char)0x4a, (char)0x4a, (char)0x4a, +(char)0x4a, (char)0x4a, (char)0x4a, (char)0x4a, (char)0x4a, (char)0x4a, (char)0x4a, (char)0x4a, +(char)0x4a, (char)0x4a, (char)0x4b, (char)0x4b, (char)0x4b, (char)0x4b, (char)0x4b, (char)0x4b, +(char)0x4b, (char)0x4b, (char)0x4b, (char)0x4b, (char)0x4b, (char)0x4b, (char)0x4b, (char)0x4b, +(char)0x4b, (char)0x4b, (char)0x4c, (char)0x4c, (char)0x4c, (char)0x4c, (char)0x4c, (char)0x4c, +(char)0x4c, (char)0x4c, (char)0x4c, (char)0x4c, (char)0x4c, (char)0x4c, (char)0x4c, (char)0x4c, +(char)0x4c, (char)0x4c, (char)0x4d, (char)0x4d, (char)0x4d, (char)0x4d, (char)0x4d, (char)0x4d, +(char)0x4d, (char)0x4d, (char)0x4d, (char)0x4d, (char)0x4d, (char)0x4d, (char)0x4d, (char)0x4d, +(char)0x4d, (char)0x4d, (char)0x4e, (char)0x4e, (char)0x4e, (char)0x4e, (char)0x4e, (char)0x4e, +(char)0x4e, (char)0x4e, (char)0x4e, (char)0x4e, (char)0x4e, (char)0x4e, (char)0x4e, (char)0x4e, +(char)0x4e, (char)0x4e, (char)0x4f, (char)0x4f, (char)0x4f, (char)0x4f, (char)0x4f, (char)0x4f, +(char)0x4f, (char)0x4f, (char)0x4f, (char)0x4f, (char)0x4f, (char)0x4f, (char)0x4f, (char)0x4f, +(char)0x4f, (char)0x4f, (char)0x50, (char)0x50, (char)0x50, (char)0x50, (char)0x50, (char)0x50, +(char)0x50, (char)0x50, (char)0x51, (char)0x51, (char)0x51, (char)0x51, (char)0x51, (char)0x51, +(char)0x51, (char)0x51, (char)0x52, (char)0x52, (char)0x52, (char)0x52, (char)0x52, (char)0x52, +(char)0x52, (char)0x52, (char)0x53, (char)0x53, (char)0x53, (char)0x53, (char)0x53, (char)0x53, +(char)0x53, (char)0x53, (char)0x54, (char)0x54, (char)0x54, (char)0x54, (char)0x54, (char)0x54, +(char)0x54, (char)0x54, (char)0x55, (char)0x55, (char)0x55, (char)0x55, (char)0x55, (char)0x55, +(char)0x55, (char)0x55, (char)0x56, (char)0x56, (char)0x56, (char)0x56, (char)0x56, (char)0x56, +(char)0x56, (char)0x56, (char)0x57, (char)0x57, (char)0x57, (char)0x57, (char)0x57, (char)0x57, +(char)0x57, (char)0x57, (char)0x58, (char)0x58, (char)0x58, (char)0x58, (char)0x58, (char)0x58, +(char)0x58, (char)0x58, (char)0x59, (char)0x59, (char)0x59, (char)0x59, (char)0x59, (char)0x59, +(char)0x59, (char)0x59, (char)0x5a, (char)0x5a, (char)0x5a, (char)0x5a, (char)0x5a, (char)0x5a, +(char)0x5a, (char)0x5a, (char)0x5b, (char)0x5b, (char)0x5b, (char)0x5b, (char)0x5b, (char)0x5b, +(char)0x5b, (char)0x5b, (char)0x5c, (char)0x5c, (char)0x5c, (char)0x5c, (char)0x5c, (char)0x5c, +(char)0x5c, (char)0x5c, (char)0x5d, (char)0x5d, (char)0x5d, (char)0x5d, (char)0x5d, (char)0x5d, +(char)0x5d, (char)0x5d, (char)0x5e, (char)0x5e, (char)0x5e, (char)0x5e, (char)0x5e, (char)0x5e, +(char)0x5e, (char)0x5e, (char)0x5f, (char)0x5f, (char)0x5f, (char)0x5f, (char)0x5f, (char)0x5f, +(char)0x5f, (char)0x5f, (char)0x60, (char)0x60, (char)0x60, (char)0x60, (char)0x61, (char)0x61, +(char)0x61, (char)0x61, (char)0x62, (char)0x62, (char)0x62, (char)0x62, (char)0x63, (char)0x63, +(char)0x63, (char)0x63, (char)0x64, (char)0x64, (char)0x64, (char)0x64, (char)0x65, (char)0x65, +(char)0x65, (char)0x65, (char)0x66, (char)0x66, (char)0x66, (char)0x66, (char)0x67, (char)0x67, +(char)0x67, (char)0x67, (char)0x68, (char)0x68, (char)0x68, (char)0x68, (char)0x69, (char)0x69, +(char)0x69, (char)0x69, (char)0x6a, (char)0x6a, (char)0x6a, (char)0x6a, (char)0x6b, (char)0x6b, +(char)0x6b, (char)0x6b, (char)0x6c, (char)0x6c, (char)0x6c, (char)0x6c, (char)0x6d, (char)0x6d, +(char)0x6d, (char)0x6d, (char)0x6e, (char)0x6e, (char)0x6e, (char)0x6e, (char)0x6f, (char)0x6f, +(char)0x6f, (char)0x6f, (char)0x70, (char)0x70, (char)0x71, (char)0x71, (char)0x72, (char)0x72, +(char)0x73, (char)0x73, (char)0x74, (char)0x74, (char)0x75, (char)0x75, (char)0x76, (char)0x76, +(char)0x77, (char)0x77, (char)0x78, (char)0x78, (char)0x79, (char)0x79, (char)0x7a, (char)0x7a, +(char)0x7b, (char)0x7b, (char)0x7c, (char)0x7c, (char)0x7d, (char)0x7d, (char)0x7e, (char)0x7e}; const short a2s_table[TABLE_SIZE8] = { -0xea80, 0xeb80, 0xe880, 0xe980, 0xee80, 0xef80, 0xec80, 0xed80, -0xe280, 0xe380, 0xe080, 0xe180, 0xe680, 0xe780, 0xe480, 0xe580, -0xf540, 0xf5c0, 0xf440, 0xf4c0, 0xf740, 0xf7c0, 0xf640, 0xf6c0, -0xf140, 0xf1c0, 0xf040, 0xf0c0, 0xf340, 0xf3c0, 0xf240, 0xf2c0, -0xaa00, 0xae00, 0xa200, 0xa600, 0xba00, 0xbe00, 0xb200, 0xb600, -0x8a00, 0x8e00, 0x8200, 0x8600, 0x9a00, 0x9e00, 0x9200, 0x9600, -0xd500, 0xd700, 0xd100, 0xd300, 0xdd00, 0xdf00, 0xd900, 0xdb00, -0xc500, 0xc700, 0xc100, 0xc300, 0xcd00, 0xcf00, 0xc900, 0xcb00, -0xfea8, 0xfeb8, 0xfe88, 0xfe98, 0xfee8, 0xfef8, 0xfec8, 0xfed8, -0xfe28, 0xfe38, 0xfe08, 0xfe18, 0xfe68, 0xfe78, 0xfe48, 0xfe58, -0xffa8, 0xffb8, 0xff88, 0xff98, 0xffe8, 0xfff8, 0xffc8, 0xffd8, -0xff28, 0xff38, 0xff08, 0xff18, 0xff68, 0xff78, 0xff48, 0xff58, -0xfaa0, 0xfae0, 0xfa20, 0xfa60, 0xfba0, 0xfbe0, 0xfb20, 0xfb60, -0xf8a0, 0xf8e0, 0xf820, 0xf860, 0xf9a0, 0xf9e0, 0xf920, 0xf960, -0xfd50, 0xfd70, 0xfd10, 0xfd30, 0xfdd0, 0xfdf0, 0xfd90, 0xfdb0, -0xfc50, 0xfc70, 0xfc10, 0xfc30, 0xfcd0, 0xfcf0, 0xfc90, 0xfcb0, -0x1580, 0x1480, 0x1780, 0x1680, 0x1180, 0x1080, 0x1380, 0x1280, -0x1d80, 0x1c80, 0x1f80, 0x1e80, 0x1980, 0x1880, 0x1b80, 0x1a80, -0x0ac0, 0x0a40, 0x0bc0, 0x0b40, 0x08c0, 0x0840, 0x09c0, 0x0940, -0x0ec0, 0x0e40, 0x0fc0, 0x0f40, 0x0cc0, 0x0c40, 0x0dc0, 0x0d40, -0x5600, 0x5200, 0x5e00, 0x5a00, 0x4600, 0x4200, 0x4e00, 0x4a00, -0x7600, 0x7200, 0x7e00, 0x7a00, 0x6600, 0x6200, 0x6e00, 0x6a00, -0x2b00, 0x2900, 0x2f00, 0x2d00, 0x2300, 0x2100, 0x2700, 0x2500, -0x3b00, 0x3900, 0x3f00, 0x3d00, 0x3300, 0x3100, 0x3700, 0x3500, -0x0158, 0x0148, 0x0178, 0x0168, 0x0118, 0x0108, 0x0138, 0x0128, -0x01d8, 0x01c8, 0x01f8, 0x01e8, 0x0198, 0x0188, 0x01b8, 0x01a8, -0x0058, 0x0048, 0x0078, 0x0068, 0x0018, 0x0008, 0x0038, 0x0028, -0x00d8, 0x00c8, 0x00f8, 0x00e8, 0x0098, 0x0088, 0x00b8, 0x00a8, -0x0560, 0x0520, 0x05e0, 0x05a0, 0x0460, 0x0420, 0x04e0, 0x04a0, -0x0760, 0x0720, 0x07e0, 0x07a0, 0x0660, 0x0620, 0x06e0, 0x06a0, -0x02b0, 0x0290, 0x02f0, 0x02d0, 0x0230, 0x0210, 0x0270, 0x0250, -0x03b0, 0x0390, 0x03f0, 0x03d0, 0x0330, 0x0310, 0x0370, 0x0350}; +(short)0xea80, (short)0xeb80, (short)0xe880, (short)0xe980, (short)0xee80, (short)0xef80, (short)0xec80, (short)0xed80, +(short)0xe280, (short)0xe380, (short)0xe080, (short)0xe180, (short)0xe680, (short)0xe780, (short)0xe480, (short)0xe580, +(short)0xf540, (short)0xf5c0, (short)0xf440, (short)0xf4c0, (short)0xf740, (short)0xf7c0, (short)0xf640, (short)0xf6c0, +(short)0xf140, (short)0xf1c0, (short)0xf040, (short)0xf0c0, (short)0xf340, (short)0xf3c0, (short)0xf240, (short)0xf2c0, +(short)0xaa00, (short)0xae00, (short)0xa200, (short)0xa600, (short)0xba00, (short)0xbe00, (short)0xb200, (short)0xb600, +(short)0x8a00, (short)0x8e00, (short)0x8200, (short)0x8600, (short)0x9a00, (short)0x9e00, (short)0x9200, (short)0x9600, +(short)0xd500, (short)0xd700, (short)0xd100, (short)0xd300, (short)0xdd00, (short)0xdf00, (short)0xd900, (short)0xdb00, +(short)0xc500, (short)0xc700, (short)0xc100, (short)0xc300, (short)0xcd00, (short)0xcf00, (short)0xc900, (short)0xcb00, +(short)0xfea8, (short)0xfeb8, (short)0xfe88, (short)0xfe98, (short)0xfee8, (short)0xfef8, (short)0xfec8, (short)0xfed8, +(short)0xfe28, (short)0xfe38, (short)0xfe08, (short)0xfe18, (short)0xfe68, (short)0xfe78, (short)0xfe48, (short)0xfe58, +(short)0xffa8, (short)0xffb8, (short)0xff88, (short)0xff98, (short)0xffe8, (short)0xfff8, (short)0xffc8, (short)0xffd8, +(short)0xff28, (short)0xff38, (short)0xff08, (short)0xff18, (short)0xff68, (short)0xff78, (short)0xff48, (short)0xff58, +(short)0xfaa0, (short)0xfae0, (short)0xfa20, (short)0xfa60, (short)0xfba0, (short)0xfbe0, (short)0xfb20, (short)0xfb60, +(short)0xf8a0, (short)0xf8e0, (short)0xf820, (short)0xf860, (short)0xf9a0, (short)0xf9e0, (short)0xf920, (short)0xf960, +(short)0xfd50, (short)0xfd70, (short)0xfd10, (short)0xfd30, (short)0xfdd0, (short)0xfdf0, (short)0xfd90, (short)0xfdb0, +(short)0xfc50, (short)0xfc70, (short)0xfc10, (short)0xfc30, (short)0xfcd0, (short)0xfcf0, (short)0xfc90, (short)0xfcb0, +(short)0x1580, (short)0x1480, (short)0x1780, (short)0x1680, (short)0x1180, (short)0x1080, (short)0x1380, (short)0x1280, +(short)0x1d80, (short)0x1c80, (short)0x1f80, (short)0x1e80, (short)0x1980, (short)0x1880, (short)0x1b80, (short)0x1a80, +(short)0x0ac0, (short)0x0a40, (short)0x0bc0, (short)0x0b40, (short)0x08c0, (short)0x0840, (short)0x09c0, (short)0x0940, +(short)0x0ec0, (short)0x0e40, (short)0x0fc0, (short)0x0f40, (short)0x0cc0, (short)0x0c40, (short)0x0dc0, (short)0x0d40, +(short)0x5600, (short)0x5200, (short)0x5e00, (short)0x5a00, (short)0x4600, (short)0x4200, (short)0x4e00, (short)0x4a00, +(short)0x7600, (short)0x7200, (short)0x7e00, (short)0x7a00, (short)0x6600, (short)0x6200, (short)0x6e00, (short)0x6a00, +(short)0x2b00, (short)0x2900, (short)0x2f00, (short)0x2d00, (short)0x2300, (short)0x2100, (short)0x2700, (short)0x2500, +(short)0x3b00, (short)0x3900, (short)0x3f00, (short)0x3d00, (short)0x3300, (short)0x3100, (short)0x3700, (short)0x3500, +(short)0x0158, (short)0x0148, (short)0x0178, (short)0x0168, (short)0x0118, (short)0x0108, (short)0x0138, (short)0x0128, +(short)0x01d8, (short)0x01c8, (short)0x01f8, (short)0x01e8, (short)0x0198, (short)0x0188, (short)0x01b8, (short)0x01a8, +(short)0x0058, (short)0x0048, (short)0x0078, (short)0x0068, (short)0x0018, (short)0x0008, (short)0x0038, (short)0x0028, +(short)0x00d8, (short)0x00c8, (short)0x00f8, (short)0x00e8, (short)0x0098, (short)0x0088, (short)0x00b8, (short)0x00a8, +(short)0x0560, (short)0x0520, (short)0x05e0, (short)0x05a0, (short)0x0460, (short)0x0420, (short)0x04e0, (short)0x04a0, +(short)0x0760, (short)0x0720, (short)0x07e0, (short)0x07a0, (short)0x0660, (short)0x0620, (short)0x06e0, (short)0x06a0, +(short)0x02b0, (short)0x0290, (short)0x02f0, (short)0x02d0, (short)0x0230, (short)0x0210, (short)0x0270, (short)0x0250, +(short)0x03b0, (short)0x0390, (short)0x03f0, (short)0x03d0, (short)0x0330, (short)0x0310, (short)0x0370, (short)0x0350}; const char s2a_table[TABLE_SIZE14] = { -0xd5, 0xd5, 0xd5, 0xd5, 0xd4, 0xd4, 0xd4, 0xd4, -0xd7, 0xd7, 0xd7, 0xd7, 0xd6, 0xd6, 0xd6, 0xd6, -0xd1, 0xd1, 0xd1, 0xd1, 0xd0, 0xd0, 0xd0, 0xd0, -0xd3, 0xd3, 0xd3, 0xd3, 0xd2, 0xd2, 0xd2, 0xd2, -0xdd, 0xdd, 0xdd, 0xdd, 0xdc, 0xdc, 0xdc, 0xdc, -0xdf, 0xdf, 0xdf, 0xdf, 0xde, 0xde, 0xde, 0xde, -0xd9, 0xd9, 0xd9, 0xd9, 0xd8, 0xd8, 0xd8, 0xd8, -0xdb, 0xdb, 0xdb, 0xdb, 0xda, 0xda, 0xda, 0xda, -0xc5, 0xc5, 0xc5, 0xc5, 0xc4, 0xc4, 0xc4, 0xc4, -0xc7, 0xc7, 0xc7, 0xc7, 0xc6, 0xc6, 0xc6, 0xc6, -0xc1, 0xc1, 0xc1, 0xc1, 0xc0, 0xc0, 0xc0, 0xc0, -0xc3, 0xc3, 0xc3, 0xc3, 0xc2, 0xc2, 0xc2, 0xc2, -0xcd, 0xcd, 0xcd, 0xcd, 0xcc, 0xcc, 0xcc, 0xcc, -0xcf, 0xcf, 0xcf, 0xcf, 0xce, 0xce, 0xce, 0xce, -0xc9, 0xc9, 0xc9, 0xc9, 0xc8, 0xc8, 0xc8, 0xc8, -0xcb, 0xcb, 0xcb, 0xcb, 0xca, 0xca, 0xca, 0xca, -0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, -0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, -0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, -0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, -0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, -0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, -0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, -0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, -0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, -0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, -0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, -0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, -0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, -0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, -0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, -0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, -0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, -0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, -0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, -0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, -0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, -0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, -0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, -0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, -0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, -0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, -0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, -0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, -0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, -0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, -0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, -0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, -0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, -0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, -0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, -0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, -0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, -0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, -0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, -0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, -0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, -0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, -0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, -0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, -0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, -0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, -0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, -0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, 0xea, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, 0x95, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, 0x97, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, 0x96, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, 0x91, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, 0x93, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, 0x9f, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, 0x87, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, 0x86, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, 0x8c, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, 0x8a, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, 0xb5, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, 0xba, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, 0xa7, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, -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, 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, 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, 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, -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, 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, 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, 0xa0, 0xa0, -0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, -0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, 0xae, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, 0xab, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, 0x2a, -0x2a, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, 0x2b, -0x2b, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, -0x28, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, -0x29, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, -0x2e, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, -0x2f, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, 0x2c, -0x2c, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, -0x2d, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, -0x22, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, -0x23, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, -0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, -0x21, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, -0x26, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, -0x27, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, -0x24, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, -0x25, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, 0x3a, -0x3a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, -0x38, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, -0x39, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, 0x3e, -0x3e, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, -0x3f, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, 0x3c, -0x3c, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, 0x3d, -0x3d, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, -0x32, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, -0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, -0x30, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, -0x31, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, -0x36, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, -0x37, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, -0x34, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, -0x35, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, -0x0a, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, -0x0b, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, -0x08, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, -0x09, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, -0x0e, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, -0x0f, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, -0x0c, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, 0x0d, -0x0d, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, -0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, -0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, -0x01, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, -0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, -0x07, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, -0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, -0x05, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, 0x1a, -0x1a, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, 0x1b, -0x1b, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, -0x18, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, -0x19, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, -0x1e, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, -0x1f, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, -0x1c, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, 0x1d, -0x1d, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, -0x12, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, -0x13, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, -0x10, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, -0x11, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, 0x16, -0x16, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, -0x17, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, -0x14, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, -0x15, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, -0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, 0x6a, -0x6a, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, -0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, 0x6b, -0x6b, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, -0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, 0x68, -0x68, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, -0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, 0x69, -0x69, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, -0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, 0x6e, -0x6e, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, -0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, 0x6f, -0x6f, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, -0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, 0x6c, -0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, -0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, 0x6d, -0x6d, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, -0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, 0x62, -0x62, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, -0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, -0x63, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, -0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, -0x60, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, -0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, 0x61, -0x61, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, -0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, -0x66, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, -0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, 0x67, -0x67, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, -0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, -0x64, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, -0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, 0x65, -0x65, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, 0x7a, -0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, -0x7b, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, 0x78, -0x78, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, -0x79, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, 0x7e, -0x7e, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f, -0x7f, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, 0x7c, -0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, 0x7d, -0x7d, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, -0x72, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, 0x73, -0x73, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, 0x70, -0x70, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, 0x71, -0x71, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, 0x76, -0x76, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, -0x77, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, 0x74, -0x74, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, 0x75, -0x75, 0x4a, 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, -0x4b, 0x48, 0x48, 0x48, 0x48, 0x49, 0x49, 0x49, -0x49, 0x4e, 0x4e, 0x4e, 0x4e, 0x4f, 0x4f, 0x4f, -0x4f, 0x4c, 0x4c, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, -0x4d, 0x42, 0x42, 0x42, 0x42, 0x43, 0x43, 0x43, -0x43, 0x40, 0x40, 0x40, 0x40, 0x41, 0x41, 0x41, -0x41, 0x46, 0x46, 0x46, 0x46, 0x47, 0x47, 0x47, -0x47, 0x44, 0x44, 0x44, 0x44, 0x45, 0x45, 0x45, -0x45, 0x5a, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, -0x5b, 0x58, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, -0x59, 0x5e, 0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, -0x5f, 0x5c, 0x5c, 0x5c, 0x5c, 0x5d, 0x5d, 0x5d, -0x5d, 0x52, 0x52, 0x52, 0x52, 0x53, 0x53, 0x53, -0x53, 0x50, 0x50, 0x50, 0x50, 0x51, 0x51, 0x51, -0x51, 0x56, 0x56, 0x56, 0x56, 0x57, 0x57, 0x57, -0x57, 0x54, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55}; +(char)0xd5, (char)0xd5, (char)0xd5, (char)0xd5, (char)0xd4, (char)0xd4, (char)0xd4, (char)0xd4, +(char)0xd7, (char)0xd7, (char)0xd7, (char)0xd7, (char)0xd6, (char)0xd6, (char)0xd6, (char)0xd6, +(char)0xd1, (char)0xd1, (char)0xd1, (char)0xd1, (char)0xd0, (char)0xd0, (char)0xd0, (char)0xd0, +(char)0xd3, (char)0xd3, (char)0xd3, (char)0xd3, (char)0xd2, (char)0xd2, (char)0xd2, (char)0xd2, +(char)0xdd, (char)0xdd, (char)0xdd, (char)0xdd, (char)0xdc, (char)0xdc, (char)0xdc, (char)0xdc, +(char)0xdf, (char)0xdf, (char)0xdf, (char)0xdf, (char)0xde, (char)0xde, (char)0xde, (char)0xde, +(char)0xd9, (char)0xd9, (char)0xd9, (char)0xd9, (char)0xd8, (char)0xd8, (char)0xd8, (char)0xd8, +(char)0xdb, (char)0xdb, (char)0xdb, (char)0xdb, (char)0xda, (char)0xda, (char)0xda, (char)0xda, +(char)0xc5, (char)0xc5, (char)0xc5, (char)0xc5, (char)0xc4, (char)0xc4, (char)0xc4, (char)0xc4, +(char)0xc7, (char)0xc7, (char)0xc7, (char)0xc7, (char)0xc6, (char)0xc6, (char)0xc6, (char)0xc6, +(char)0xc1, (char)0xc1, (char)0xc1, (char)0xc1, (char)0xc0, (char)0xc0, (char)0xc0, (char)0xc0, +(char)0xc3, (char)0xc3, (char)0xc3, (char)0xc3, (char)0xc2, (char)0xc2, (char)0xc2, (char)0xc2, +(char)0xcd, (char)0xcd, (char)0xcd, (char)0xcd, (char)0xcc, (char)0xcc, (char)0xcc, (char)0xcc, +(char)0xcf, (char)0xcf, (char)0xcf, (char)0xcf, (char)0xce, (char)0xce, (char)0xce, (char)0xce, +(char)0xc9, (char)0xc9, (char)0xc9, (char)0xc9, (char)0xc8, (char)0xc8, (char)0xc8, (char)0xc8, +(char)0xc